Рубрики
Без рубрики

Java i18n – Интернационализация на Java

Интернационализация на Java. Пример Java i18n. локализация java, файл свойств java i18n. java.util.ResourceBundle, Локаль, resourcebundle, getBundle

Автор оригинала: Pankaj Kumar.

Интернационализация в Java или Java i18n является очень важной функцией. Java обеспечивает поддержку интернационализации (i18n) с помощью пакетов ресурсов.

Интернационализация на Java

Чтобы ваше приложение поддерживало разные языки, нам необходимо создать файл свойств, специфичный для конкретного языка. Имена файлов соответствуют шаблону имени пакета с кодом языка и кодом страны, например Application Messages_en_US.properties .

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

Это очень полезно для определения языкового стандарта текстов веб-приложений.Вы можете получить информацию о языковом стандарте из HTTP-запроса и создать динамическую страницу с файлами пакета ресурсов этого языкового стандарта. Вы также можете предоставить пользователю возможность выбрать языковой стандарт и динамически обновлять метки.

Пример Java i18n

Для примера java i18n я создал проект, структура которого похожа на изображение ниже.

Вот код java для Примера интернационализации Java класса.

package com.journaldev.i18n;

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

public class JavaInternationalizationExample {

    public static void main(String[] args) {
        //default locale
        ResourceBundle bundle = ResourceBundle.getBundle("ApplicationMessages");
        //Get ResourceBundle with Locale that are already defined
        ResourceBundle bundleFR = ResourceBundle.getBundle("ApplicationMessages", Locale.FRANCE);
        //Get resource bundle when Locale needs to be created
        ResourceBundle bundleSWE = ResourceBundle.getBundle("ApplicationMessages", new Locale("sv", "SE"));
        
        //lets print some messages
        printMessages(bundle);
        printMessages(bundleFR);
        printMessages(bundleSWE);
        
    }

    private static void printMessages(ResourceBundle bundle) {
        System.out.println(bundle.getString("CountryName"));
        System.out.println(bundle.getString("CurrencyCode"));
    }

}

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

Здесь имя пакета || Сообщения приложения||, и у меня есть 2 пакета ресурсов, специфичных для конкретной локали, и один пакет ресурсов по умолчанию.

CountryName=USA
CurrencyCode=USD

Здесь имя пакета || Сообщения приложения||, и у меня есть 2 пакета ресурсов, специфичных для конкретной локали, и один пакет ресурсов по умолчанию.

CountryName=France
CurrencyCode=Euro

Здесь имя пакета || Сообщения приложения||, и у меня есть 2 пакета ресурсов, специфичных для конкретной локали, и один пакет ресурсов по умолчанию.

CountryName=Sweden
CurrencyCode=Kr

Обратите внимание на использование класса Locale, некоторые локали уже определены, но мы всегда можем создать новый язык, передав код языка и код страны в его конструктор.

Когда я запускаю вышеприведенную программу, вот результат.

USA
USD
France
Euro
Sweden
Kr

Это все для быстрого примера java i18n. Интернационализация на java очень полезна в веб-приложениях для обслуживания страниц на языке, определяемом языковым стандартом.