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

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

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

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

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

Вывод

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

Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!

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

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

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

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

Распечатать