public class Test {
public Test() {
}
public static void main(String[] args) {
Test test = new Test();
Locale l = Locale.getDefault();
System.out.println(l.getCountry() + " " +
l.getDisplayCountry() + " " + l.getISO3Country());
System.out.println(l.getLanguage() + " " +
l.getDisplayLanguage() + " " + l.getISO3Language());
System.out.println(l.getVariant() + " " +
l.getDisplayVariant());
l = new Locale("ru","RU","WINDOWS");
System.out.println(l.getCountry() + " " +
l.getDisplayCountry() + " " + l.getISO3Country());
System.out.println(l.getLanguage() + " " +
l.getDisplayLanguage() + " " + l.getISO3Language());
System.out.println(l.getVariant() + " " +
l.getDisplayVariant());
}
}
ΠΡΠΈΠΌΠ΅Ρ 14.26.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ:
US United States USA
en English eng
RU Russia RUS
ru Russian rus
WINDOWS WINDOWS
ΠΡΠΈΠΌΠ΅Ρ 14.27.
ΠΠ»Π°ΡΡ ResourceBundle
ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ResourceBundle ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΡΡΠΎΠΊ, Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ Π»ΠΎΠΊΠ°Π»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ResourceBundle.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ResourceBundle Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Π΅. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π»Π΅Π³ΠΊΠΎ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΡΠ΅ΡΡΡΡΠΎΠ², Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ, ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΈ Ρ.Π΄.
ΠΠ°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² - ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π±ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ΄Π½ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ. ΠΠ°Π»Π΅Π΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»ΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΈΠΌΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ MyResources, ΡΠΎ Π΄Π»Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ MyResources_en, Π΄Π»Ρ ΡΡΡΡΠΊΠΎΠΉ - MyResources_ru. ΠΠΎΠΌΠΈΠΌΠΎ ΡΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ°, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·ΡΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, MyResources_de_CH - ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ²Π΅ΠΉΡΠ°ΡΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π΅ΠΌΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊ variant (ΡΠΌ. ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Locale ). Π’Π°ΠΊ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ°Π½Π½Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ UNIX Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: MyResources_de_CH_UNIX .
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ Π½ΡΠΆΠ½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° getBundle.:
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources",
someLocale);
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ (ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ), ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ (Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ) ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΠ‘ ΠΈΠ»ΠΈ JVM) Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΈΠΌΠ΅Π½ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΈΡΠ΅ΠΌ, ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π»ΠΎΠΊΠ°Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ (ΡΠ·ΡΠΊ, ΡΡΡΠ°Π½Π°, Π²Π°ΡΠΈΠ°Π½Ρ) ΠΊΠ°ΠΊ 1, Π° Π»ΠΎΠΊΠ°Π»ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ - 2, ΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
baseclass + " " + language1 + " " + country1 + " " + variant1
baseclass + " " + language1 + " " + country1 + " " + variant1 +
".properties"
baseclass + " " + language1 + " " + country1
baseclass + " " + language1 + " " + country1 + ".properties"
baseclass + " " + language1
baseclass + " " + language1 + ".properties"
baseclass + " " + language2 + " " + country2 + " " + variant2
baseclass + " " + language2 + " " + country2 + " " + variant2 +
".properties"
baseclass + " " + language2 + " " + country2
baseclass + " " + language2 + " " + country2 + ".properties"
baseclass + " " + language2 baseclass + " " + language2 + ".properties"
baseclass baseclass + ".properties"
ΠΡΠΈΠΌΠ΅Ρ 14.28.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡΠΈ ResourceBundle Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΈ fr_CH (Π¨Π²Π΅ΠΉΡΠ°ΡΡΠΊΠΈΠΉ ΡΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ), Π° Π»ΠΎΠΊΠ°Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ en_US, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ResourceBundle MyResources, ΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ResourceBundle Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠ².
MyResources_fr_CH
MyResources_fr
MyResources_en_US
MyResources_en
MyResources
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ getBundle Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½, ΡΠΎ ΠΊ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ".properties" ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΡΡΠ° ΠΏΠΎΠΏΡΡΠΊΠ° Π½Π°ΠΉΡΠΈ ΡΠ°ΠΉΠ» Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π° Π΄ΠΈΡΠΊΠ΅.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ², Ρ.Π΅. ΠΈΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ»Π°ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° (ΡΠ°ΠΌ, Π³Π΄Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ getResourceBundle ), ΡΠΎ Π΅ΡΡΡ Π½Π΅ Π±ΡΡΡ private ΠΈ Ρ.Π΄.
ΠΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π±Π΅Π· ΡΡΡΡΠΈΠΊΡΠΎΠ², Ρ.Π΅. Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ MyResource, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠ»Π°ΡΡ MyResource.class.
ResourceBundle Ρ ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ ΠΊΠ»ΡΡ/Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΠΊΠ»Π°ΡΡ ResourceBundle Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ:
Enumeration getKeys()
protected Object handleGetObject(String key)
ΠΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ResourceBundle, Π²ΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ResourceBundle:
public class MyResource extends ResourceBundle {
private Hashtable res = null;
public MyResource() {
res = new Hashtable();
res.put("TestKey","English Variant");
}
public Enumeration getKeys() {
return res.keys();
}
protected Object handleGetObject(String key) throws
java.util.MissingResourceException {
return res.get(key);
}
}
public class MyResource_ru_RU extends ResourceBundle {
private Hashtable res = null;
public MyResource_ru_RU() {
res = new Hashtable();
res.put("TestKey","Π ΡΡΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ");
}
public Enumeration getKeys() {
return res.keys();
}
protected Object handleGetObject(String key) throws
java.util.MissingResourceException {
return res.get(key);
}
}
public class Test {
public Test() {
}
public static void main(String[] args) {
Test test = new Test();
ResourceBundle rb = ResourceBundle.getBundle("experiment.MyResource",Locale.getDefault());
System.out.println(rb.getString("TestKey"));
rb = ResourceBundle.getBundle("experiment.MyResource", new Locale("ru","RU"));
System.out.println(rb.getString("TestKey"));
}
}
ΠΡΠΈΠΌΠ΅Ρ 14.29.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ:
English Variant Π ΡΡΡΠΊΠΈΠΉ ΠΠ°ΡΠΈΠ°Π½Ρ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ResourceBundle ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π½ΡΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π»ΠΎΠΊΠ°Π»ΠΈ.
public interface Behavior {
public String getBehavior();
public String getCapital();
}
public class EnglishBehavior implements Behavior {
public EnglishBehavior() {
}
public String getBehavior() {
return "English behavior";
}
public String getCapital() {
return "London";
}
}
public class RussianBehavior implements Behavior {
public RussianBehavior() {
}
public String getBehavior() {
return "Π ΡΡΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ";
}
public String getCapital() {
return "ΠΠΎΡΠΊΠ²Π°";
}
}
public class MyResourceBundle_ru_RU extends ResourceBundle {
Hashtable bundle = null;
public MyResourceBundle_ru_RU() {
bundle = new Hashtable();
bundle.put("Bundle description","ΠΠ°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΡΡΡΠΊΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ");
bundle.put("Behavior",new RussianBehavior());
}
public Enumeration getKeys() {
return bundle.keys();
}
protected Object handleGetObject(String key) throws
java.util.MissingResourceException {
return bundle.get(key);
}
}
public class MyResourceBundle_en_EN extends ResourceBundle {
Hashtable bundle = null;
public MyResourceBundle_en_EN() {
bundle = new Hashtable();
bundle.put("Bundle description","English resource set");
bundle.put("Behavior",new EnglishBehavior());
}
public Enumeration getKeys() {
return bundle.keys();
}
protected Object handleGetObject(String key) throws
java.util.MissingResourceException {
return bundle.get(key);
}
}
public class MyResourceBundle extends ResourceBundle {
Hashtable bundle = null;
public MyResourceBundle() {
bundle = new Hashtable();
bundle.put("Bundle description","Default resource bundle");
bundle.put("Behavior",new EnglishBehavior());
}
public Enumeration getKeys() {
return bundle.keys();
}
protected Object handleGetObject(String key) throws
java.util.MissingResourceException {
return bundle.get(key);
}
}
public class Using {
public Using() {
}
public static void main(String[] args) {
Using u = new Using();
ResourceBundle rb = ResourceBundle.getBundle("lecture.MyResourceBundle", Locale.getDefault());
System.out.println((String)rb.getObject("Bundle description"));
Behavior be = (Behavior)rb.getObject("Behavior");
System.out.println(be.getBehavior());
System.out.println(be.getCapital());
rb = ResourceBundle.getBundle("lecture.MyResourceBundle", new Locale("en","EN"));
System.out.println((String)rb.getObject("Bundle description"));
Behavior be = (Behavior)rb.getObject("Behavior");
System.out.println(be.getBehavior());
System.out.println(be.getCapital());
}
ΠΡΠΈΠΌΠ΅Ρ 14.30.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ:
Π ΡΡΡΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ²
Π ΡΡΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ
ΠΠΎΡΠΊΠ²Π°
English resource bundle
English behavior
London
ΠΡΠΈΠΌΠ΅Ρ 14.31.
ΠΠ»Π°ΡΡΡ ListResourceBundle ΠΈ PropertiesResourceBundle
Π£ ΠΊΠ»Π°ΡΡΠ° ResourceBundle ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π΄Π²Π° ΠΏΡΡΠΌΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠ° ListResourceBundle ΠΈ PropertiesResourceBundle. PropertiesResourceBundle Ρ ΡΠ°Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΡΠΎΠΊ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ², Π±ΡΠ» ΠΎΠΏΠΈΡΠ°Π½ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅. ΠΠΎ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ .properties, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, baseclass + " " + language1 + " " + country1 + ".properties", ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ResourceBundle ΠΈΠ· ΡΠ°ΠΉΠ»Π° Ρ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ baseclass + " " + language1 + " " + country1 ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ properties. ΠΠ±ΡΡΠ½ΠΎ ΠΊΠ»Π°ΡΡ ResourceBundle ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ resources, Π° ΡΠ°ΠΉΠ» ΡΠ²ΠΎΠΉΡΡΠ² - Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ resources. Π’ΠΎΠ³Π΄Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ (ΡΠ°ΠΉΠ»Ρ):
getBundle("resources.MyResource",
Locale.getDefault());
ListResourceBundle Ρ ΡΠ°Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ. ΠΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ListResourceBundle, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ:
ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Object[][] getContents(), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅ΡΡΡΡΠΎΠ²;
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ΅ΡΡΡΡΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
public class MyResource extends ListResourceBundle {
Vector v = new Vector();
Object[][] resources = {
{
"StringKey","String"
}
, {
"DoubleKey",new Double(0.0)
}
, {
"VectorKey",v
}
,
};
public MyResource() {
super();
v.add("Element 1");
v.add("Element 2");
v.add("Element 3");
}
protected Object[][] getContents() {
return resources;
}
}
public class Test {
public Test() {
}
public static void main(String[] args) {
Test test = new Test();
ResourceBundle rb = ResourceBundle.getBundle("experiment.MyResource",Locale.getDefault());
Vector v = (Vector)rb.getObject("VectorKey");