Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Kapitel 10 Raum und Zeit
  gp 10.1 Greenwich Mean Time (GMT)
  gp 10.2 Wichtige Datum-Klassen im Überblick
  gp 10.3 Sprachen der Länder
    gp 10.3.1 Sprachen und Regionen über Locale-Objekte
  gp 10.4 Übersetzung durch ResourceBundle-Objekte
  gp 10.5 Zeitzonen
    gp 10.5.1 Zeitzonen durch die Klasse TimeZone repräsentieren
  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.7.3 Ostertage
    gp 10.7.4 Abfragen und Setzen von Datumselementen
  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.3 Sprachen der Ländedowntop

Programme der ersten Generation konnten nur mit fest verdrahteten Landessprachen und landesüblichen Bezeichnungen umgehen. Daraus ergaben sich natürlich vielfältige Probleme. Mehrsprachige Programme mussten aufwendig entwickelt werden, damit sie unter mehreren Sprachen lokalisierte Ausgaben liefern. (Es ergaben sich bereits Probleme dadurch, dass unterschiedliche Zeichenkodierungen verwendet wurden. Dies wurde aber mit Unicode umgangen.) Es blieb das Problem, dass sprachabhängige Zeichenketten, wie alle anderen Zeichenketten auch, überall im Programmtext verteilt sind. Eine nachträgliche Sprachanpassung wird schwer. Java bietet hier eine Lösung an: zum einen durch die Definition einer Sprache und damit automatische Formatierungen, und zum anderen durch die Möglichkeit, sprachenabhängige Teile in Ressourcen-Dateien auszulagern.

Eclipse

Eclipse kann automatisch die Zeichenketten eines Programms in eine Datei auszulagern. Dazu ist im Menü "Source" der Eintrag "Externalize Strings…" aufzurufen.


Galileo Computing

10.3.1 Sprachen und Regionen über Locale-Objekte  toptop

In Java repräsentieren Locale-Objekte geografische, politische oder kulturelle Regionen. Die Sprache und die Region müssen getrennt werden, denn nicht immer gibt eine Region oder ein Land die Sprache eindeutig vor. Für Kanada in der Umgebung von Quebec ist die französische Ausgabe relevant, und die unterscheidet sich von der englischen. Jede dieser sprachspezifischen Eigenschaften ist in einem speziellen Objekt gekapselt.


Beispiel   Sprach-Objekte werden immer mit dem Namen der Sprache und optional mit dem Namen des Landes beziehungsweise einer Region erzeugt. Im Konstruktor der Klasse Locale werden dann Länderabkürzungen angegeben, etwa für ein Sprach-Objekt für England oder Frankreich.
Locale greatBritain = new Locale( "en", "GB" );
Locale french = new Locale( "fr" );
Im zweiten Beispiel ist uns das Land egal. Wir haben einfach nur die Sprache Französisch ausgewählt, egal in welchem Teil der Welt.

Die Sprachen sind durch Zwei-Buchstaben-Kürzel aus dem ISO 639-Code (ISO Language Code) identifiziert, und die Ländernamen sind Zwei-Buchstaben-Kürzel, die in ISO 3166 (ISO Country Code) beschrieben sind.


final class java.util.  Locale
  implements Cloneable, Serializable

gp  Locale( String language ) Erzeugt ein neues Locale-Objekt für die Sprache language nach dem ISO 693-Standard.
gp  Locale( String language, String country ) Erzeugt ein Locale-Objekt für language (ISO 693) und das Land country nach dem ISO 3166-Standard.
gp  public Locale( String language, String country, String variant ) Erzeugt ein Locale-Objekt für language und das Land country in der Variante variant. variant ist eine herstellerabhängige Angabe, wie WIN oder MAC.

Konstanten für einige Länder

Die Locale-Klasse besitzt Konstanten für häufig auftretende Länder und Sprachen. Für ein Locale-Objekt für Great Britain kann anstelle von new Locale("en","GB") auch Locale.UK Verwendung finden. Unter den Konstanten sind: CANADA, CANADA_FRENCH, CHINA, CHINESE, ENGLISH, FRANCE, FRENCH, GERMAN, GERMANY, ITALIAN, ITALY, JAPAN, JAPANESE, KOREA, KOREAN, PRC, SIMPLIFIED_CHINESE, TAIWAN, TRADITIONAL_CHINESE, UK und US. Im Quellcode der Klasse Locale sind dazu einfach die entsprechenden Länderkürzel als Namen von Konstanten definiert.

Zwei Beispiele:

static public final Locale FRANCE  = new Locale("fr","FR","");
static public final Locale GERMANY = new Locale("de","DE","");

Methoden von Locale

Locale-Objekte lassen sich fragen, wie ihre Sprache heißt, die sie repräsentieren. Dazu bietet das Locale-Objekt eine Reihe von Methoden an:


final class java.util.  Locale
  implements Cloneable, Serializable

gp  String getCountry() Liefert das Länderkürzel nach dem ISO-3166-Zwei-Buchstaben-Code.
gp  String getLanguage() Liefert das Kürzel der Sprache im ISO-639-Code.
gp  String getVariant() Liefert das Kürzel der Variante.
gp  final String getDisplayCountry() Liefert ein Kürzel des Landes für Bildschirmausgaben.
gp  final String getDisplayLanguage() Liefert ein Kürzel der Sprache für Bildschirmausgaben.
gp  final String getDisplayName() Liefert den Namen der Einstellungen.
gp  final String getDisplayVariant() Liefert den Namen der Variante.
gp  String getISO3Country() Liefert die ISO-Abkürzung des Landes dieser Einstellungen und löst eine MissingResourceException aus, wenn die ISO-Abkürzung nicht verfügbar ist.
gp  String getISO3Language() Liefert die ISO-Abkürzung der Sprache dieser Einstellungen und löst eine MissingResourceException aus, wenn die ISO-Abkürzung nicht verfügbar ist.

Beispiel   Die folgende Applikation gibt alle gefundenen Locale-Objekte aus (über 130). An der Ausgabe sind die Unterschiede der Funktionen gut zu erkennen.

Listing 10.1   AllLocales.java

import java.util.Locale;
import static java.lang.System.out;
public class AllLocales
{
  public static void main( String[] args )
  {
    for ( Locale l : Locale.getAvailableLocales() )
    {                                            // Beispiel für Deutschland
      out.print( l.getCountry() + ", " );        // DE
      out.print( l.getLanguage() + ", " );       // de
      out.print( l.getVariant() + ", " );        //
      out.print( l.getDisplayName() + ", " );    // Deutsch (Deutschland)
      out.print( l.getDisplayCountry() + ", " ); // Deutschland
      out.print( l.getDisplayLanguage() + ", " );// Deutsch
      out.print( l.getDisplayName() + ", " );    // Deutsch (Deutschland)
      out.print( l.getDisplayVariant() + ", " ); //
      out.print( l.getISO3Country() + ", " );    // DEU
      out.println( l.getISO3Language() );        // deu
    }
  }
}

Ein Ausschnitt der Ausgabe. Bemerkenswert ist, dass einige Angaben nicht gefüllt sind.

ar, , Arabisch, , ArabischArabisch, , , ara
AEar, , Arabisch (Vereinigte Arabische Emirate)Vereinigte Arabische EmirateArabischArabisch 
(Vereinigte Arabische Emirate), , AREara
BHar, , Arabisch (Bahrain)BahrainArabischArabisch (Bahrain), , BHRara
DZar, , Arabisch (Algerien)AlgerienArabischArabisch (Algerien), , DZAara
EGar, , Arabisch (Ägypten), ÄgyptenArabischArabisch (Ägypten), , EGYara
IQar, , Arabisch (Irak)IrakArabischArabisch (Irak), , IRQara
...
, sv, , Schwedisch, , SchwedischSchwedisch, , , swe
SEsv, , Schwedisch (Schweden)SchwedenSchwedischSchwedisch (Schweden), , SWEswetr, , Türkisch, , TürkischTürkisch, , , tur
TRtr, , Türkisch (Türkei)TürkeiTürkischTürkisch (Türkei), , TURturuk, , Ukrainisch, , UkrainischUkrainisch, , , ukr
UAuk, , Ukrainisch (Ukraine)UkraineUkrainischUkrainisch (Ukraine), , UKRukr
USen, , Englisch (Vereinigte Staaten von Amerika)Vereinigte Staaten von AmerikaEnglischEnglisch 
(Vereinigte Staaten von Amerika), , USAengen, , Englisch, , EnglischEnglisch, , , eng

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




1  http://www.loc.gov/standards/iso639-2/langcodes.html

2  http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html

 << zurück




Copyright © Galileo Press GmbH 2005
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, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de