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.