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