Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° JavaΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 79

Автор Н.А. Вязовик

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");