Internalizacja języka Java - klasa ResourceBundle

Klasa ResourceBundle służy do przechowywania tekstu i obiektów uwzględniających ustawienia regionalne. Zwykle używamy plików właściwości do przechowywania tekstu specyficznego dla lokalizacji, a następnie reprezentujemy je za pomocą obiektu ResourceBundle. Poniżej przedstawiono kroki, aby użyć pliku właściwości specyficznych dla ustawień regionalnych w aplikacji opartej na Javie.

Krok 1: Utwórz pliki właściwości.

Załóżmy, że potrzebujemy pliku właściwości dla języka angielskiego. Następnie utwórz nazwę pliku właściwości XXX_en_US.properties, gdzie XXX to nazwa pliku, a en_US reprezentuje język angielski (USA).

Messages_en_US.properties

message=Welcome to TutorialsPoint.COM!

Utwórzmy teraz plik właściwości dla francuskich ustawień regionalnych. Następnie utwórz nazwę pliku właściwości XXX_fr_FR.properties, gdzie XXX jest nazwą pliku, a fr_FR reprezentuje język francuski (Francja).

Messages_fr_FR.properties

message=Bienvenue sur TutorialsPoint.COM!

Tutaj możesz dowiedzieć się, że klucz jest taki sam, ale wartość jest specyficzna dla ustawień regionalnych w obu plikach właściwości.

Krok 2: Utwórz obiekt ResourceBundle

Utwórz obiekt ResourceBundle z nazwą pliku właściwości i ustawieniami narodowymi, używając następującej składni.

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

Krok 3: Pobierz wartość z obiektu ResourceBundle.

Pobierz wartość z obiektu ResourceBundle, przekazując klucz.

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

Przykład

Poniższy przykład ilustruje użycie obiektów ResourceBundle do wyświetlania wartości specyficznych dla ustawień regionalnych z plików właściwości.

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

Wynik

Zostanie wydrukowany następujący wynik.

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

Uwagi dotyczące konwencji nazewnictwa

Poniżej przedstawiono konwencje nazewnictwa dla pliku właściwości.

  • W przypadku pliku właściwości zamapowanego na domyślne ustawienia regionalne nie jest wymagany żaden przedrostek. message_en_US.properties jest równoważne z message.properties.

  • W przypadku pliku właściwości zamapowanego na język, przedrostek można dołączyć na dwa sposoby. message_fr.properties jest odpowiednikiem message_fr_FR.properties.

Wydrukować