2011-08-28 9 views

risposta

3

Ho paura che non ci siano costanti per tutte le lingue. Esistono diverse impostazioni internazionali predefinite, ad esempio Locale.UKLocale.US, ecc. Ogni locale ha un codice lingua che può essere ottenuto tramite il metodo getLanguage().

Per ottenere tutto il codice lingua supportata dall'utilizzo JVM sottostante getISOLanguages()

for(String lang : Locale.getISOLanguages()) { 
    System.out.println(lang); 
} 

Maggiori dettagli: http://download.oracle.com/javase/1.4.2/docs/api/java/util/Locale.html

0

Yup .. Utilizzare Locale.COUNTRY-NAME

+2

Non è la stessa cosa. Martin sta cercando i codici * language *, non * country *. Non necessariamente mappano 1: 1 tra loro. –

+0

@ Michael: hai ragione. –

+3

puoi usare le impostazioni internazionali per ottenere la lingua in questo modo 'Locale local = Locale.ENGLISH; local.getLanguage(); ' –

4

I codici di lingua 2 lettere sono definiti da ISO 639-1. La classe java.util.Locale non li contiene tutti, ma solo Locali supportati dalla VM (come da Locale.getAvailableLocales()).

Il modo più semplice per accedere a tutti i codici lingua ISO 639-1 in Java è affidarsi al progetto International Components for Unicode (ICU4J) — una libreria i18n ampia, ampiamente utilizzata e attivamente sviluppata da IBM. È possibile ottenere l'elenco di tutte le lingue dalla classe ULocale: com.ibm.icu.util.ULocale.getISOLanguages().

+0

È ISO 639-1, non 639-2. Altrimenti, +1. – Henning