|
|
Этот раздел проходит по шагам через программный пример, названный
PropertiesDemo
Файл свойств - обычный текстовый файл. Вы можете создавать и поддерживать файл свойств при помощи люього текстового редактора.Вы всегда должны создавать файл свойств по умолчанию. Имя этого файла начинается с базового имени вашего
ResourceBundleи заканчивается суффиксом.properties. В программеPropertiesDemoбазовое имя -LabelsBundle. Следовательно, файл свойств по умолчанию называетсяLabelsBundle.properties. Этот файл содержит следующие строки:Заметьте, что в вышеприведенном файле строка комментария начинается с символа (#). Другие строки содержат пары ключ-значение. Ключ находится слева от знака равенства, а значение - справа. Например,# This is the default LabelsBundle.properties file s1 = computer s2 = disk s3 = monitor s4 = keyboards2- это ключ, которому соответствует значениеdisk. Ключи произвольны. Мы могли назватьs2как-нибудь иначе, например,msg5илиdiskID. Однако, однажды определенный ключ не должен меняться, потому что на него есть ссылки в исходном коде. Значения могут меняться. Фактически, когда ваши сотрудники, занимающиеся локализацией, создают новые файлы свойств для подключения новых языков, они будут переводить значения на разные языки.
Для поддержки дополнительныхLocaleваши сотрудники, занимающиеся локализацией, будут создавать новые файлы свойств, которые содержат переведенные значения. Не требуется никаких изменений в вашем исходном коде, потому что ваша программа ссылается на ключи, а не на значения.Например, для добавления поддержки немецкого языка ваши локализаторы должны перевести значения в
LabelsBundle.propertiesи поместить из в файл по имениLabelsBundle_de.properties. Заметьте, что имя этого файла как и файла по умолчанию, начинается с базового имениLabelsBundleи заканчивается суффиксом.properties. Обнако, поскольку этот файл предназначается для специфическойLocale, за базовым именем следует код языке (de). СодержимоеLabelsBundle_de.propertiesследующее:Программный пример# This is the LabelsBundle_de.properties file s1 = Computer s2 = Platte s3 = Monitor s4 = TastaturPropertiesDemoпредоставляется с тремя файлами свойств:LabelsBundle.properties LabelsBundle_de.properties LabelsBundle_fr.properties
ПрограммаPropertiesDemoсоздает объектыLocaleтак:Эти объектыLocale[] supportedLocales = { Locale.FRENCH, Locale.GERMAN, Locale.ENGLISH };Localeдолжны соответствовать файлам свойств, созданным на двух предыдущих шагах. Например, объектLocale.FRENCHсоответствует файлуLabelsBundle_fr.properties.Locale.ENGLISHне соответствует файлуLabelsBundle_en.properties, так что будет использован файл по умолчанию.
Этот шаг показывает как соотносятсяLocale, файлы свойств иResourceBundle. Чтобы создатьResourceBundle, вызовите методgetBundle, задав базовое имя иLocale:ResourceBundle labels = ResourceBundle.getBundle("LabelsBundle", currentLocale);Метод
getBundleсначала ищет класс, который соответствует базовому имени иLocale. Если он не может найти файл класса, он проверяет файлы свойств. В программеPropertiesDemoмы поддерживаемResourceBundleфайлами свойств, а не файлами классов. Когда методgetBundleнеходит правильный файл свойств, он возвращает объектPropertyResourceBundle, содержащий пары ключ-значение из файла свойств.
Чтобы выбрать переведенное значение изResourceBundle, вызовите методgetStringследующим образом:String value = labels.getString(key);
String, возвращаемаяgetStringсоответствует заданному ключу.Stringпредставлена на определенном языке, обеспечивается файлом свойств, существующим для заданнойLocale.
Этот шаг не обязателен. При отладке вашей программы вы можете захотеть выбрать значения для всех ключей вResourceBundle. МетодgetKeysвозвращаетEnumerationдля всех ключей вResourceBundle. Вы можете повторять выборку изEnumerationвыбрать каждое значение при помощи методаgetString. Следующие строки кода из программыPropertiesDemoпоказывают, как это делается:ResourceBundle labels = ResourceBundle.getBundle("LabelsBundle", currentLocale); Enumeration bundleKeys = labels.getKeys(); while (bundleKeys.hasMoreElements()) { String key = (String)bundleKeys.nextElement(); String value = labels.getString(key); System.out.println("key = " + key + ", " + "value = " + value); }
Выполнение программыPropertiesDemoгенерирует следующий вывод. Первые три строки показывают значения, возвращаемыеgetStringдля разных объектовLocale. Программа выводит последние четыре строки, когда перебирает ключи методомgetKeys.Locale = fr, key = s2, value = Disque dur Locale = de, key = s2, value = Platte Locale = en, key = s2, value = disk key = s4, value = Clavier key = s3, value = Moniteur key = s2, value = Disque dur key = s1, value = Ordinateur
|
|
Copyright 1995-2002 Sun Microsystems, Inc. All rights reserved.