Поддержка JavaScript отключена
SBP-Program | |||||
На главную -> Java EE 5 |   | ||||
  |
Узел ресурсов содержит наборы данных, связанных внутри набора по локальному признаку. Если надо сохранять строковые объекты, то можно использовать файлы свойств (PropertyResourceBundle), которые являются просто текстовыми файлами. Если надо сохранять любые объекты, а не только строки, то лучше использовать класс ListResourceBundle. Таким образом, для хранения ресурсов можно использовать текстовые файлы свойств или классы. Узел содержит данные в виде пар ключ-значение, хранящихся в массиве. Ключ – это обязательно строка. Каждая пара начинается с новой строки. Данные статичны, они не меняются при работе программы. В качестве данных не используют даты, числа, т.к. эти данные сами по себе не зависят от локали. От локали зависят их представления, а представления определяются соответствующим форматированием. Файл свойств использует расширение .properties. Коментарии в нем должны начинаться со знака фунта #. Каждое свойство – ключ = значение — записывается на отдельной строке: klyuch = city
Ключ может быть любой строкой, однако, после определения, его не следует менять, т.к. на него есть ссылки из программы. Значение можно менять по мере необходимости. Узел ресурсов для другого языка содержит те же ключи, но свои значения. Название файла для этого нового узла составляется из базовго, плюс указание на локаль, плюс .properties. Например, если базовый файл называется «BaseBundle.properties», то для русской локали получаем: «BaseBundle_ru.properties». Если для какой-то локали нет соответствующего файла свойств, то используется файл базовый, в нашем случае «BaseBundle.properties». В коде ссылка на файл свойств получается так: ResourceBundle ru_res = ResourceBundle.getBundle(»BaseBundle», myLocal);
Сначала метод «getBundle» пытается найти класс для данной локали, если класс не найден, то ищется файл свойств. Получив ссылку на файл, можно извлекать нужные данные методом «getString»: String myCity = ru_res.getString(»klyuch»);
Если в качестве узла ресурсов использовать класс типа «ListResourceBundle», то в коде надо создать его экземпляр для каждой используемой локали. Соответственно должны существовать и классы для этих локалей. Названия классов составляются из имени базового класса, обозначения языка и страны, например: BaseBundle_ru_RU.class
Внутри класса должен быть закрытый (либо «static final») двумерный массив «Object[][] contents» и открытый метод доступа к этому массиву. Локали создаются так: Locale myLocal = new Locale(»ru», »RU»);
Экземпляр класса создается как и ссылка на файл свойств: ResourceBundle ru_res = ResourceBundle.getBundle(»BaseBundle», myLocal);
После получения объекта класса можно извлекать данные методом «getObject»: String myCity = (String )ru_res.getObject(»klyuch»);
Программирование |
  | |||
 
|
 
|
||||