Учебники

Интернализация Java — класс ResourceBundle

Класс ResourceBundle используется для хранения текста и объектов, которые чувствительны к локали. Обычно мы используем файлы свойств для хранения текста, определенного для локали, а затем представляем их с помощью объекта ResourceBundle. Ниже приведены инструкции по использованию файла свойств, специфичного для локали, в приложении на основе Java.

Шаг 1: Создайте файлы свойств.

Предположим, нам нужен файл свойств для английской локали. Затем создайте имя файла свойств XXX_en_US.properties, где XXX — это имя файла, а en_US — языковой стандарт для английского языка (США).

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Давайте теперь создадим файл свойств для французской локали. Затем создайте имя файла свойств XXX_fr_FR.properties, где XXX — это имя файла, а fr_FR — языковой стандарт для французского (Франция).

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Здесь вы можете выяснить, что ключ один и тот же, но значение зависит от локали в файле свойств.

Шаг 2. Создание объекта ResourceBundle

Создайте объект ResourceBundle с именем файла свойств и языковым стандартом, используя следующий синтаксис.

ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);

Шаг 3: Получить значение из объекта ResourceBundle.

Получить значение из объекта ResourceBundle, передав ключ.

String value = bundle.getString("message");

пример

Следующий пример иллюстрирует использование объектов ResourceBundle для отображения определенных значений локали из файлов свойств.

IOTester.java

import java.util.Locale;
import java.util.ResourceBundle;

public class I18NTester {
   public static void main(String[] args) {
      ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);  
      System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));  

      bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);  
      System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
   }
}

Выход

Будет напечатан следующий результат.

 Сообщение в en_US: Добро пожаловать в TutorialsPoint.COM!
 Сообщение в fr_FR: Bienvenue sur TutorialsPoint.COM!

Примечания для соглашений об именах

Ниже приведены соглашения об именах для файла свойств.

Для файла свойств, сопоставленного с локалью по умолчанию, префикс не является обязательным. message_en_US.properties эквивалентно message.properties.

Для файла свойств, сопоставленного с локалью, префикс можно прикрепить двумя способами. message_fr.properties эквивалентно message_fr_FR.properties.