4
4
import java .io .IOException ;
5
5
import java .io .InputStream ;
6
6
import java .io .InputStreamReader ;
7
+ import java .net .URL ;
7
8
import java .nio .charset .StandardCharsets ;
9
+ import java .util .Enumeration ;
8
10
import java .util .HashMap ;
9
11
import java .util .Map ;
10
12
@@ -17,22 +19,28 @@ public void changeLang(Language lang) {
17
19
translations .clear ();
18
20
currentLang = lang ;
19
21
readTranslation (MCP .class );
22
+ MCP .reloadPluginTranslations ();
20
23
}
21
24
22
25
public void readTranslation (Class <?> cls ) {
23
26
readTranslation (cls , DEFAULT_LANG );
24
- readTranslation (cls , currentLang );
27
+ if (currentLang != DEFAULT_LANG ) {
28
+ readTranslation (cls , currentLang );
29
+ }
25
30
}
26
31
27
32
private void readTranslation (Class <?> cls , Language lang ) {
28
33
readTranslation (translations , cls , lang );
29
34
}
30
35
31
36
private void readTranslation (Map <String , String > map , Class <?> cls , Language lang ) {
32
- String resourceName = "/lang/" + lang .locale .toString () + ".lang" ;
33
- //FIXME Hardcoded MCP.class because Class#getResourceAsStream return result is not the same as ClassLoader#getResourceAsStream
34
- try (InputStream resource = (cls == MCP .class ) ? cls .getResourceAsStream (resourceName ) : cls .getClassLoader ().getResourceAsStream (resourceName )) {
35
- this .readTranslation (map , resource );
37
+ String resourceName = "lang/" + lang .locale .toString () + ".lang" ;
38
+ try {
39
+ Enumeration <URL > translations = cls .getClassLoader ().getResources (resourceName );
40
+ while (translations .hasMoreElements ()) {
41
+ URL url = translations .nextElement ();
42
+ this .readTranslation (map , url .openStream ());
43
+ }
36
44
} catch (IOException ex ) {
37
45
ex .printStackTrace ();
38
46
}
0 commit comments