Java 10 Locale-Verbesserungen: Erweiterte Unicode-Erweiterungen (JEP 314)
JEP 314 – Additional Unicode Language-Tag Extensions
Java 7 führte BCP 47 Language Tags ein, aber Unicode-Locale-Erweiterungen waren auf Kalender und Zahlen beschränkt. Java 10 aktualisiert java.util.Locale und zugehörige Klassen gemäß LDML-Spezifikation um folgende Erweiterungen:
| Key | Bedeutung | Beispiel |
|---|---|---|
cu |
Währungstyp (Currency) | de-DE-u-cu-EUR |
fw |
Erster Wochentag (First Day of Week) | en-US-u-fw-mon (Montag) |
rg |
Region Override | en-u-rg-de (Englisch, aber Region Deutschland) |
tz |
Zeitzone (Time Zone) | de-DE-u-tz-europe-berlin |
Aktualisierte APIs
Folgende Klassen/Methoden berücksichtigen die neuen Erweiterungen:
java.text.DateFormat::get*Instancejava.text.DateFormatSymbols::getInstancejava.text.DecimalFormatSymbols::getInstancejava.text.NumberFormat::get*Instancejava.time.format.DateTimeFormatter::localizedByjava.time.format.DateTimeFormatterBuilder::getLocalizedDateTimePatternjava.time.format.DecimalStyle::ofjava.time.temporal.WeekFields::ofjava.util.Calendar::{getFirstDayOfWeek, getMinimalDaysInWeek}java.util.Currency::getInstancejava.util.Locale::getDisplayNamejava.util.spi.LocaleNameProvider
Beispiel
import java.util.Locale;
import java.util.Currency;
public class LocaleDemo {
public static void main(String[] args) {
// Währung via Unicode Extension
Locale loc = Locale.forLanguageTag("de-DE-u-cu-USD");
Currency c = Currency.getInstance(loc);
System.out.println("Währung für de-DE-u-cu-USD: " + c.getCurrencyCode()); // USD
// Erster Wochentag
Locale usMon = Locale.forLanguageTag("en-US-u-fw-mon");
System.out.println("First day of week (US, Mon): " +
java.time.temporal.WeekFields.of(usMon).getFirstDayOfWeek()); // MONDAY
}
}
Nutzen
- Feinere Kontrolle über Locale-Verhalten ohne Subclassing.
- Bessere Interoperabilität mit ICU / CLDR-Daten.
- Wichtig für internationale Anwendungen mit spezifischen Regionalanforderungen.
Java
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java Kommentare: Typen, Verwendung und Best Practices
- Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
- Java Strings meistern: Erstellung, Methoden und Best Practices
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
- Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList