Spec-Zone .ru
спецификации, руководства, описания, API
|
Концептуально каждый ResourceBundle
ряд связанных подклассов, которые совместно используют то же самое базовое имя. Список, который следует за шоу ряд связанных подклассов. ButtonLabel
базовое имя. Символы после базового имени указывают на код языка, код страны, и разновидность a Locale
. ButtonLabel_en_GB
, например, соответствия Locale
определенный языком кодируют для английского языка (en
) и код страны для Великобритании (GB
).
ButtonLabel ButtonLabel_de ButtonLabel_en_GB ButtonLabel_fr_CA_UNIX
Выбрать соответствующее ResourceBundle
, вызовите ResourceBundle.getBundle
метод. Следующий пример выбирает ButtonLabel
ResourceBundle
для Locale
это соответствует французский язык, страну Канады, и платформу UNIX.
Locale currentLocale = new Locale("fr", "CA", "UNIX"); ResourceBundle introLabels = ResourceBundle.getBundle( "ButtonLabel", currentLocale);
Если a ResourceBundle
class для указанного Locale
не существует, getBundle
попытки найти самое близкое соответствие. Например, если ButtonLabel_fr_CA_UNIX
требуемый class и значение по умолчанию Locale
en_US
, getBundle
будет искать классы в следующем порядке:
ButtonLabel_fr_CA_UNIX ButtonLabel_fr_CA ButtonLabel_fr ButtonLabel_en_US ButtonLabel_en ButtonLabel
Отметьте это getBundle
ищет классы, основанные на значении по умолчанию Locale
прежде, чем это выберет основной class (ButtonLabel)
. Если getBundle
сбои, чтобы найти соответствие в предыдущем списке классов, это бросает a MissingResourceException
. Чтобы избежать выдавать это исключение, следует всегда обеспечивать основной class без суффиксов.
Абстрактный class ResourceBundle
имеет два подкласса: PropertyResourceBundle
и ListResourceBundle
.
A PropertyResourceBundle
поддерживается файлом свойств. Файл свойств является файлом простого текста, который содержит переводимый текст. Файлы свойств не являются частью исходного кода Java, и они могут содержать значения для String
объекты только. Если Вы должны сохранить другие типы объектов, используйте a ListResourceBundle
вместо этого. Раздел, Поддерживающий ResourceBundle Файлами Свойств, показывает Вам, как использовать a PropertyResourceBundle
.
ListResourceBundle
class управляет ресурсами с удобным списком. Каждый ListResourceBundle
поддерживается файлом class. Можно хранить любой специфичный для локали объект в a ListResourceBundle
. Добавить поддержку дополнительного Locale
, Вы создаете другой исходный файл и компилируете его в файл class. У раздела Используя Пакет ListResource есть пример кодирования, который можно счесть полезным.
ResourceBundle
class гибок. Если Вы сначала помещаете свое специфичное для локали String
объекты в a PropertyResourceBundle
и затем позже решенный, чтобы использовать ListResourceBundle
вместо этого, нет никакого воздействия на Ваш код. Например, следующий звонок getBundle
получит a ResourceBundle
для соответствующего Locale
, ли ButtonLabel
поддерживается class или файлом свойств:
ResourceBundle introLabels = ResourceBundle.getBundle( "ButtonLabel", currentLocale);
ResourceBundle
объекты содержат массив пар ключ/значение. Вы определяете ключ, который должен быть a String
, когда Вы хотите получить значение от ResourceBundle
. Значение является специфичным для локали объектом. Ключи в следующем примере OkKey
и CancelKey
строки:
class ButtonLabel_en extends ListResourceBundle { // English version public Object[][] getContents() { return contents; } static final Object[][] contents = { {"OkKey", "OK"}, {"CancelKey", "Cancel"}, }; }
Получать OK
String
от ResourceBundle
, Вы определили бы соответствующий ключ, вызывая getString
:
String okLabel = ButtonLabel.getString("OkKey");
Файл свойств содержит пары ключ/значение. Ключ находится на левой стороне знака "равно", и значение справа. Каждая пара находится на отдельной строке. Значения могут представить String
объекты только. Следующий пример показывает содержание названного файла свойств ButtonLabel.properties
:
OkKey = OK CancelKey = Cancel