Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
gp Kapitel 10 Raum und Zeit
gp 10.1 Greenwich Mean Time (GMT)
gp 10.2 Wichtige Datum-Klassen im Überblick
gp 10.3 Zeitzonen und Sprachen der Länder
gp 10.3.1 Zeitzonen durch die Klasse TimeZone repräsentieren
gp 10.4 Sprachen der Länder
gp 10.4.1 Sprachen in Java über Locale-Objekte
gp 10.5 Einfache Übersetzung durch ResourceBundle-Objekte
gp 10.6 Die Klasse Date
gp 10.6.1 Objekte erzeugen und Methoden nutzen
gp 10.7 Calendar und GregorianCalendar
gp 10.7.1 Die abstrakte Klasse Calendar
gp 10.7.2 Der gregorianische Kalender
gp 10.8 Formatieren der Datumsangaben
gp 10.8.1 Mit DateFormat und SimpleDateFormat formatieren
gp 10.8.2 Parsen von Datumswerten
gp 10.8.3 Parsen und Formatieren ab bestimmten Positionen


Galileo Computing

10.5 Einfache Übersetzung durch ResourceBundle-Objektetoptop

Sollen Java-Programme sprachunabhängig gestaltet werden, müssen alle Zeichenketten einer Landessprache durch symbolische Namen, wie Variablen, ersetzt werden. Wenn das Programm später eine Zeichenkette nutzen will, greift es auf die Variable zu, und diese soll dann die entsprechende Übersetzung enthalten.

Die Verbindung zwischen den symbolischen Namen und den landessprachlichen Texten erfolgt in Java mithilfe der Klasse ResourceBundle. Dazu speichert ein ResourceBundle alle programmrelevanten Texte und Informationen für ein spezielles Land. In einer Datei werden die Identifizierer als Schlüssel und die landesabhängigen/sprachabhängigen Zeichenketten als Werte gehalten. Der Aufbau eines ResourceBundle erinnert uns dabei stark an eine Property-Datei. Wir wollen daher mit dem Aufbau dieser Property-Datei beginnen und definieren den Identifizierer Hello. Da wir die Sprachen Englisch und Deutsch unterstützen wollen, legen wir zwei Dateien an. Die Dateinamen für die Ressourcen-Dateien haben dabei einen speziellen Aufbau. Sie setzen sich aus dem Namen des ResourceBundle, einem Unterstrich (_), einer Landeskennung und der Dateiendung properties zusammen. Wollen wir unser ResourceBundle »HelloWorld« nennen, dann ergeben sich für die Ländercodes England »en« und für Deutschland »de« die folgenden Dateien:

Listing 10.3 HelloWorld_en.properties

# HelloWorld_en.properties
Hello=Hello World.

Listing 10.4 HelloWorld_de.properties

# HelloWorld_de.properties
Hello=Hallo Welt.

Kommentare beginnen mit einer Raute.

Als Nächstes kann das Programm folgen, das die ResourceBundle-Dateien verwendet. Wir benötigen dazu ein Objekt der Klasse ResourceBundle, welches wir über eine Fabrik-Methode ResourceBundle.getBundle(name) bekommen. name ist dabei der Name des ResourceBundle, in unserem Fall »HelloWorld«. Die Methode sucht automatisch aufgrund der eingestellten Landessprache die passende Datei. Mit dem Verweis auf das aktuelle ResourceBundle-Objekt können wir über einen Schlüssel mithilfe der Methode getString() auf die landesspezifische Meldung zugreifen.


Beispiel Mit den Ressource-Dateien HelloWorld_en.properties und HelloWorld_de.properties sowie dem Identifizierer Hello setzt sich ein Programm zur Abfrage einer Übersetzung einfach zusammen.

Listing 10.5 InternationalHelloWorld.java

import java.util.*;
//java -Duser.language=en InternationalHelloWorld
//Hello World.
public class InternationalHelloWorld
{
  public static void main( String args[] )
  {
    String baseName = "HelloWorld";
    try
    {
      ResourceBundle bundle = ResourceBundle.getBundle( baseName );
      System.out.println( bundle.getString("Hello") );
    }
    catch ( MissingResourceException e ) {
      System.err.println( e );
    }
  }
}

Die Dateinamen für die jeweiligen ResourceBundle-Objekte können sehr variabel zusammengesetzt werden. Die Java-Bibliothek verwendet die nachfolgenden Bildungsgesetze:

bundleName_localeLanguage_localeCountry_localeVariant
bundleName_localeLanguage_localeCountry
bundleName_localeLanguage
bundleName_defaultLanguage_defaultCountry_defaultVariant
bundleName_defaultLanguage_defaultCountry
bundleName_defaultLanguage
bundleName

Abbildung
Hier klicken, um das Bild zu Vergrößern

Die Suchreihenfolge ist dabei wie angegeben. Es können auch mehrere Ressource-Dateien angegeben werden, die dann der Reihe nach durchlaufen werden, sodass dadurch Werte kumulieren und sich überschreiben können.





Copyright (c) Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de