Java - пример ResourceBundle

Java - пример ResourceBundle

java.util.ResourceBundle - это библиотека, используемая для интернационализации (несколько языков). Он может возвращать сообщения в соответствии с локалью по умолчанию, настроенной для системы. Такая функциональность используется, когда кто-то разрабатывает системы для использования во всем мире.

1. Как это устроено?

Библиотека считывает файл свойств на основе языкового стандарта и суффикса имени, используемого при именовании свойства. Например, рассмотрим файл меток с именемMyLabels_en_US.properties. Этот файл читается утилитойResourceBundle, если для параметра Locale установлено значение en_US, что означает английский (США).

Locale представляет регион или местоположение с его атрибутами. Локаль, как правило, используется для ведения подробной информации о клиенте с помощью нашего приложения. Locale содержит атрибуты местоположения и язык, который будет использоваться для соответствующего местоположения. Таким образом, Locale помогаетResourceBundle выбрать правильный файл меток, определяя местоположение, к которому принадлежит пользователь.

2. пример

Давайте посмотрим на приведенный ниже пример для большей ясности по теме:

MyLabels_en_US.properties

how_are_you = How are you?

MyLabels_ms_MY.properties

how_are_you = apa khabar

Application.java

package com.example;

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

public class Application {

    public static void main(String[] args) {

        // en_US
        System.out.println("Current Locale: " + Locale.getDefault());
        ResourceBundle mybundle = ResourceBundle.getBundle("MyLabels");

        // read MyLabels_en_US.properties
        System.out.println("Say how are you in US English: " + mybundle.getString("how_are_you"));

        Locale.setDefault(new Locale("ms", "MY"));

        // read MyLabels_ms_MY.properties
        System.out.println("Current Locale: " + Locale.getDefault());
        mybundle = ResourceBundle.getBundle("MyLabels");
        System.out.println("Say how are you in Malaysian Malaya language: " + mybundle.getString("how_are_you"));

    }

}

При выполнении этого кода мы получаем следующий вывод:

Current Locale: en_US
Say how are you in US English: How are you?
Current Locale: ms_MY
Say how are you in Malaysian Malaya language: apa khabar

Как видно из вывода, в зависимости от значения по умолчанию, установленного для набора Locale. Эта утилита в основном используется в веб-приложениях, где веб-браузер помогает узнать локаль удаленного пользователя. Это позволяет показать веб-сайт на определенном языке, насколько это возможно.

Скачать исходный код