La classe Locale per le Impostazioni Locali in Java

Concetti Chiave
  • La classe Locale in Java è utilizzata per gestire le impostazioni locali, come la rappresentazione di date, numeri e valute.
  • Fornisce costanti per diverse regioni e lingue, facilitando la creazione di oggetti che rappresentano specifiche impostazioni locali.
  • La classe include metodi per ottenere informazioni leggibili dall'uomo sulle impostazioni locali, come il nome del paese e della lingua.
  • A partire da JDK 7, la classe Locale supporta il BCP 47 e l'Unicode Technical Standard (UTS) 35, introducendo nuove funzionalità e metodi.

La classe Locale

La classe Locale viene utilizzata per produrre oggetti che descrivono una regione geografica o culturale. È una delle diverse classi che forniscono la capacità di scrivere programmi che possono essere eseguiti in diversi ambienti internazionali. Ad esempio, i formati utilizzati per visualizzare date, orari e numeri sono diversi nelle varie regioni.

L'internazionalizzazione è un argomento ampio che va oltre lo scopo di questa guiada. Tuttavia, molti programmi dovranno occuparsi solo delle sue basi, che includono l'impostazione delle impostazioni locali correnti come la rappresentazione di date, numeri e valute. La classe Locale fornisce un modo per specificare le impostazioni locali per un programma Java.

La classe Locale definisce le seguenti costanti statiche che sono utili per gestire diversi locale comuni:

  • CANADA
  • CANADA_FRENCH
  • CHINA
  • CHINESE
  • ENGLISH
  • FRANCE
  • FRENCH
  • GERMANY
  • GERMAN
  • ITALIAN
  • ITALY
  • JAPAN
  • JAPANESE
  • KOREA
  • KOREAN
  • PRC
  • SIMPLIFIED_CHINESE
  • TAIWAN
  • TRADITIONAL_CHINESE
  • UK
  • US

Ad esempio, l'espressione Locale.ITALY rappresenta l'oggetto Locale per l'Italia. I costruttori per Locale sono

Locale(String lingua)
Locale(String lingua, String paese)
Locale(String lingua, String paese, String variante)

Questi costruttori costruiscono un oggetto Locale per rappresentare una lingua specifica e nel caso degli ultimi due, un paese. Questi valori devono contenere codici standard di lingua e paese. Informazioni di variante ausiliarie possono essere fornite in variante.

Locale definisce diversi metodi. Uno dei più importanti è setDefault(), mostrato qui:

static void setDefault(Locale oggettoLocale)

Questo imposta la configurazione locale predefinita utilizzato dalla JVM a quello specificato da oggettoLocale. Altri metodi interessanti sono i seguenti:

final String getDisplayCountry()
final String getDisplayLanguage()
final String getDisplayName()

Questi restituiscono stringhe leggibili dall'uomo che possono essere utilizzate per visualizzare il nome del paese, il nome della lingua e la descrizione completa delle impostazioni locali, rispettivamente. Questi metodi sono utili per visualizzare le impostazioni locali in un'interfaccia utente.

L'impostazione locale predefinita può essere ottenuto utilizzando getDefault(), mostrato qui:

static Locale getDefault()

JDK 7 ha aggiunto aggiornamenti significativi alla classe Locale che supportano il BCP 47 dell'Internet Engineering Task Force (IETF), che definisce tag per identificare le lingue, e Unicode Technical Standard (UTS) 35, che definisce il Locale Data Markup Language (LDML).

Il supporto per BCP 47 e UTS 35 ha causato l'aggiunta di diverse funzionalità a Locale, inclusi diversi nuovi metodi e la classe Locale.Builder. Tra gli altri, i nuovi metodi includono getScript(), che ottiene lo script dell'impostazione locale, e toLanguageTag(), che ottiene una stringa che contiene il tag della lingua dell'impostazione locale. La classe Locale.Builder costruisce istanze di Locale. Garantisce che una specifica di locale sia ben formata come definito da BCP 47. (I costruttori di Locale non forniscono tale controllo.) Diversi nuovi metodi sono stati anche aggiunti a Locale da JDK 8. Tra questi ci sono metodi che supportano filtri, estensioni e ricerche. JDK 9 ha aggiunto un metodo chiamato getISOCountries(), che restituisce una collezione di codici paese per un dato valore di enumerazione Locale.IsoCountryCode.

Calendar e GregorianCalendar sono esempi di classi che operano in modo sensibile alle impostazioni locali. DateFormat e SimpleDateFormat dipendono anche loro dalle impostazioni locali.