Lokalisieren mit ResourceBundles
java.util.ResourceBundle
In vielen Anwendungen sollen alle Texte für verschiedene Sprachen verfügbar sein.
Diese Texte lassen sich in sogenannte ResourceBundles auslagern. Dies wird hier in Form zweier einfacher Properties-Dateien gezeigt. Dabei definieren die beiden Buchstaben nach dem „_“ die Sprache (de=deutsch, en=englisch, fr=französisch, …).
Zusätzlich kann auch das Land angegeben werden (DE=Deutschland, CH=Schweiz, …). In diesem Fall würde die Property-Datei z.B. texts_de_DE.properties heißen.
Property-Datei für die deutschen Texte (texts_de.properties):
name=Name street=Straße city=Ort
Property-Datei für die englischen Texte (texts_en.properties):
name=name street=street city=city
Die Verwendung erfolgt dann so:
String baseName = "texts"; try { ResourceBundle rb = ResourceBundle.getBundle(baseName); System.out.println(rb.getString("name")); // "Name" oder "name" System.out.println(rb.getString("street")); // "Straße" oder "street" System.out.println(rb.getString("city")); // "Ort" oder "city" } catch (MissingResourceException e) { // Die Property-Datei konnte nicht gefunden werden // oder der Key ist nicht vorhanden. }
Das obere Beispiel liefert die im Betriebssystem eingestellt Sprache.
Mann kann die Sprache aber auch erzwingen:
rb = PropertyResourceBundle.getBundle(baseName, Locale.GERMAN); // Für Deutsch