2016-03-17 10 views
9

Ho un elenco di codici lingua (come in "en", "es" ...) Ho bisogno di visualizzare in quelli linguaggio come questo:Get nome di lingua in quella lingua dal codice di lingua

English 
Español 
Français 
Deutsch 
日本語 

C'è qualche API integrata per ottenere questi in Android o dovrei mapparli da solo?

+1

http://developer.android.com/reference/java/util/Locale.html#getDisplayName(java.util.Locale) o http://developer.android.com/reference/java/util/Locale.html#getDisplayLanguage(java.util.Locale) –

+3

Possibile duplicato di [libreria/API Java che converte il codice lingua in nome lingua] (http://stackoverflow.com/questions/12910955/java-library-api-which-converte-language-code-to-language-name) –

risposta

18

La classe Locale ha un metodo per questo: public String getDisplayLanguage(Locale locale). Dalla documentazione: "Restituisce il nome della lingua di questa localizzazione, localizzata sulla locale Se il nome della lingua è sconosciuto, viene restituito il codice della lingua.". modo da poter ottenere i nomi di lingua per locali come questo:

String lng = "en"; 
Locale loc = new Locale(lng); 
String name = loc.getDisplayLanguage(loc); // English 

lng = "es"; 
loc = new Locale(lng); 
name = loc.getDisplayLanguage(loc); // español 

//... 
+0

Questo è quasi esattamente ciò di cui avevo bisogno. Ho dovuto scrivere la prima lettera in maiuscolo perché "es" restituisce "español" come "Español" ma è quasi perfetto. Grazie! – razielsarafan

+2

@razielsarafan è facile da usare maiuscole: 'name = name.substring (0, 1) .toUpperCase() + name.substring (1);' – nvi9

+0

Per ottenere tutti i codici paese: https://stackoverflow.com/a/ 30028371/3527024 – thenaoh