Rheinwerk Computing < openbook >


 
Inhaltsverzeichnis
Materialien zum Buch
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichen und Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Schnittstellen, Aufzählungen, versiegelte Klassen, Records
9 Ausnahmen müssen sein
10 Geschachtelte Typen
11 Besondere Typen der Java SE
12 Generics<T>
13 Lambda-Ausdrücke und funktionale Programmierung
14 Architektur, Design und angewandte Objektorientierung
15 Java Platform Module System
16 Die Klassenbibliothek
17 Einführung in die nebenläufige Programmierung
18 Einführung in Datenstrukturen und Algorithmen
19 Einführung in grafische Oberflächen
20 Einführung in Dateien und Datenströme
21 Einführung ins Datenbankmanagement mit JDBC
22 Bits und Bytes, Mathematisches und Geld
23 Testen mit JUnit
24 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 16 Die Klassenbibliothek
Pfeil 16.1 Die Java-Klassenphilosophie
Pfeil 16.1.1 Modul, Paket, Typ
Pfeil 16.1.2 Übersicht über die Pakete der Standardbibliothek
Pfeil 16.2 Einfache Zeitmessung und Profiling *
Pfeil 16.3 Die Klasse Class
Pfeil 16.3.1 An ein Class-Objekt kommen
Pfeil 16.3.2 Eine Class ist ein Type
Pfeil 16.4 Klassenlader
Pfeil 16.4.1 Die Klasse java.lang.ClassLoader
Pfeil 16.5 Die Utility-Klassen System und Properties
Pfeil 16.5.1 Speicher der JVM
Pfeil 16.5.2 Anzahl der CPUs bzw. Kerne
Pfeil 16.5.3 Systemeigenschaften der Java-Umgebung
Pfeil 16.5.4 Eigene Properties von der Konsole aus setzen *
Pfeil 16.5.5 Zeilenumbruchzeichen, line.separator
Pfeil 16.5.6 Umgebungsvariablen des Betriebssystems
Pfeil 16.6 Sprachen der Länder
Pfeil 16.6.1 Sprachen in Regionen über Locale-Objekte
Pfeil 16.7 Wichtige Datum-Klassen im Überblick
Pfeil 16.7.1 Der 1.1.1970
Pfeil 16.7.2 System.currentTimeMillis()
Pfeil 16.7.3 Einfache Zeitumrechnungen durch TimeUnit
Pfeil 16.8 Date-Time-API
Pfeil 16.8.1 Menschenzeit und Maschinenzeit
Pfeil 16.8.2 Die Datumsklasse LocalDate
Pfeil 16.9 Logging mit Java
Pfeil 16.9.1 Logging-APIs
Pfeil 16.9.2 Logging mit java.util.logging
Pfeil 16.10 Maven: Build-Management und Abhängigkeiten auflösen
Pfeil 16.10.1 Beispielprojekt in Eclipse mit Maven
Pfeil 16.10.2 Properties hinzunehmen
Pfeil 16.10.3 Dependency hinzunehmen
Pfeil 16.10.4 Lokales und das Remote-Repository
Pfeil 16.10.5 Lebenszylus, Phasen und Maven-Plugins
Pfeil 16.10.6 Archetypes
Pfeil 16.11 Zum Weiterlesen
 

Zum Seitenanfang

16.6    Sprachen der Länder Zur vorigen ÜberschriftZur nächsten Überschrift

Beginnen Entwickler mit Ausgaben auf der Konsole oder grafischen Oberfläche, so verdrahten sie oft die Ausgabe fest mit einer Landessprache. Ändert sich die Sprache, kann die Software nicht mit anderen landesüblichen Regeln etwa bei der Formatierung von Fließkommazahlen umgehen. Dabei ist es gar nicht schwer, »mehrsprachige« Programme zu entwickeln, die unter verschiedenen Sprachen lokalisierte Ausgaben liefern. Im Grunde müssen wir alle sprachabhängigen Zeichenketten und Formatierungen von Daten durch Code ersetzen, der die landesüblichen Ausgaben und Regeln berücksichtigt. Java bietet hier eine Lösung an: zum einen durch die Definition einer Sprache, die dann Regeln vorgibt, nach denen die Java-API Daten automatisch formatieren kann, und zum anderen durch die Möglichkeit, sprachabhängige Teile in Ressourcendateien auszulagern.

 

Zum Seitenanfang

16.6.1    Sprachen in Regionen über Locale-Objekte Zur vorigen ÜberschriftZur nächsten Überschrift

In Java repräsentieren Locale-Objekte Sprachen in geografischen, politischen oder kulturellen 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. Locale-Objekte werden dann zum Beispiel einem Formatter, der hinter String.format(…) und printf(…) steht, oder einem Scanner übergeben. Diese Ausgaben nennen sich auf Englisch locale-sensitive.

Locale-Objekte aufbauen

Locale-Objekte werden immer mit dem Namen der Sprache und optional mit dem Namen des Landes bzw. einer Region und Variante erzeugt. Die Locale-Klasse bietet drei Möglichkeiten zum Aufbau der Objekte:

  • mit dem Locale-Konstruktor

  • Die geschachtelte Klasse Builder von Locale nutzt das Builder-Pattern zum Aufbau neuer Locale-Objekte.

  • über die Locale-Methode forLanguageTag(…) und eine String-Kennung

[zB]  Beispiel

Im Konstruktor der Klasse Locale werden Länderabkürzungen angegeben, etwa für ein Sprachobjekt für Großbritannien 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[ 240 ](https://de.wikipedia.org/wiki/Liste_der_ISO-639-1-Codes) (ISO Language Code) identifiziert, und die Ländernamen sind Zwei-Buchstaben-Kürzel, die in ISO 3166[ 241 ](https://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste) (ISO Country Code) beschrieben sind.

[zB]  Beispiel

Drei Varianten zum Aufbau der Locale.JAPANESE:

Locale loc1 = new Locale( "ja" );

Locale loc2 = new Locale.Builder().setLanguage( "ja" ).build();

Locale loc3 = Locale.forLanguageTag( "ja" );
final class java.util.Locale

implements Cloneable, Serializable
  • Locale(String language)

    Erzeugt ein neues Locale-Objekt für die Sprache (language), die nach dem ISO-693-Standard gegeben ist. Ungültige Kennungen werden nicht erkannt.

  • Locale(String language, String country)

    Erzeugt ein Locale-Objekt für eine Sprache (language) nach ISO 693 und ein Land (country) nach dem ISO-3166-Standard.

  • Locale(String language, String country, String variant)

    Erzeugt ein Locale-Objekt für eine Sprache, ein Land und eine Variante. variant ist eine herstellerabhängige Angabe wie »WIN« oder »MAC«.

Die statische Methode Locale.getDefault() liefert die aktuell eingestellte Sprache. Für die laufende JVM kann Locale.setDefault(Locale) die Sprache ändern.

Die Locale-Klasse hat weitere Methoden; Entwickler sollten für den Builder, für forLanguageTag(…) und die neuen Erweiterungen und Filtermethoden die Javadoc studieren.[ 242 ](Auf Englisch beschreibt das Java-Tutorial von Oracle die Erweiterungen unter http://docs.oracle.com/javase/tutorial/i18n/locale/index.html. )

Konstanten für einige Sprachen

Die Locale-Klasse besitzt Konstanten für häufig auftretende Sprachen optional mit Ländern. Unter den Konstanten für Länder und Sprachen sind: CANADA, CANADA_FRENCH, CHINA ist gleich CHINESE (und auch PRC bzw. SIMPLIFIED_CHINESE), ENGLISH, FRANCE, FRENCH, GERMAN, GERMANY, ITALIAN, ITALY, JAPAN, JAPANESE, KOREA, KOREAN, TAIWAN (ist gleich TRADITIONAL_CHINESE), UK und US. Hinter einer Abkürzung wie Locale.UK steht nichts anderes als die Initialisierung mit new Locale("en", "GB").

Methoden, die Locale-Exemplare annehmen

Locale-Objekte sind als Objekte eigentlich uninteressant – sie haben Methoden, doch spannender ist der Typ als Identifikation für eine Sprache. In der Java-Bibliothek gibt es Dutzende von Methoden, die Locale-Objekte annehmen und anhand deren ihr Verhalten anpassen. Beispiele sind printf(Locale, …), format(Locale, …) und toLowerCase(Locale).

[+]  Tipp

Gibt es keine Variante einer Formatierungs- bzw. Parse-Methode mit einem Locale-Objekt, so unterstützt die Methode in der Regel kein sprachabhängiges Verhalten. Das Gleiche gilt für Objekte, die kein Locale über einen Konstruktor bzw. Setter annehmen. Double.toString(…) ist so ein Beispiel, auch Double.parseDouble(…). In internationalisierten Anwendungen werden diese Methoden selten zu finden sein. Auch eine String-Konkatenation mit beispielsweise einer Fließkommazahl ist nicht erlaubt (sie ruft intern eine Double-Methode auf), und ein String.format(…) ist allemal besser.

Methoden von Locale *

Locale-Objekte bieten eine Reihe von Methoden an, die etwa den ISO-639-Code des Landes preisgeben.

[zB]  Beispiel

Gib für Sprachen in ausgewählten Ländern zugängliche Locale-Informationen aus. Die Objekte System.out und Locale.* sind statisch importiert:

Listing 16.4     src/main/java/com/tutego/insel/locale/GermanyLocal.java, main()

out.println(GERMANY.getCountry());           // DE

out.println(GERMANY.getLanguage()); // de

out.println(GERMANY.getVariant()); //

out.println(GERMANY.getISO3Country()); // DEU

out.println(GERMANY.getISO3Language()); // deu

out.println(CANADA.getDisplayCountry()); // Kanada

out.println(GERMANY.getDisplayLanguage()); // Deutsch

out.println(GERMANY.getDisplayName()); // Deutsch (Deutschland)

out.println(CANADA.getDisplayName()); // Englisch (Kanada)

out.println(GERMANY.getDisplayName(FRENCH)); // allemand (Allemagne)

out.println(CANADA.getDisplayName(FRENCH)); // anglais (Canada)

Es gibt auch statische Methoden zum Erfragen von Locale-Objekten:

final class java.util.Locale

implements Cloneable, Serializable
  • static Locale getDefault()

    Liefert die von der JVM voreingestellte Sprache, die standardmäßig vom Betriebssystem stammt.

  • static Locale[] getAvailableLocales()

    Liefert eine Aufzählung aller installierten Locale-Objekte. Das Feld enthält mindestens Locale.US und ca. 160 Einträge.

  • static String[] getISOCountries()

    Liefert ein Array mit allen aus zwei Buchstaben bestehenden ISO-3166-Country-Codes.

  • static Set<String> getISOCountries(Locale.IsoCountryCode type)

    Liefert eine Menge mit allen ISO-3166-Country-Codes, wobei die Aufzählung IsoCountryCode bestimmt: PART1_ALPHA2 liefert den Code aus zwei Buchstaben, PART1_ALPHA3 aus drei Buchstaben, PART3 aus vier Buchstaben.

Auf der anderen Seite haben wir Methoden, die die Kürzel nach den ISO-Normen liefern:

final class java.util.Locale

implements Cloneable, Serializable
  • String getCountry()

    Liefert das Länderkürzel nach dem ISO-3166-zwei-Buchstaben-Code.

  • String getLanguage()

    Liefert das Kürzel der Sprache im ISO-639-Code.

  • 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.

  • 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.

  • String getVariant()

    Liefert das Kürzel der Variante oder einen leeren String.

Die genannten Methoden liefern zwar Kürzel, aber sie sind nicht gedacht als für Menschen lesbare Ausgabe. Für diverse get*()-Methoden gibt es entsprechende getDisplay*()-Methoden:

final class java.util.Locale

implements Cloneable, Serializable
  • String getDisplayCountry(Locale inLocale)

    final String getDisplayCountry()

    Liefert den Namen des Landes für Bildschirmausgaben für eine Sprache oder Loacale.getDefault().

  • String getDisplayLanguage(Locale inLocale)

    String getDisplayLanguage()

    Liefert den Namen der Sprache für Bildschirmausgaben für eine gegebene Locale oder Locale.getDefault().

  • String getDisplayName(Locale inLocale)

    final String getDisplayName()

    Liefert den Namen der Einstellungen für eine Sprache oder Locale.getDefault().

  • String getDisplayVariant(Locale inLocale)

    final String getDisplayVariant()

    Liefert den Namen der Variante für eine Sprache oder Locale.getDefault().

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Spring Boot 3 und Spring Framework 6

Spring Boot 3 und Spring Framework 6




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2024

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.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern