2016-11-03 7 views
0

Ich versuche, die Locale-Tags (siehe Bild) zu konvertieren, um Namen anzuzeigen. Zum Beispiel möchte ich anstelle von en-us Englisch (USA) anzeigen. Bisher habe ich es geschafft, eine Mischung aus Anzeigenamen zu erhalten und Sprach-Tags, wie im Bild:Java-Locale-Tags zu Gebietsschema Displayname

device system languages screen picture

ich viele Dinge ausprobiert haben, wie mit forLanguageTag, getDisplayLanguage + getDisplayCountry aber nichts funktioniert.

Dies ist mein Code-Schnipsel:

public void getAvailableLocales() { 
    systemLanguages = Resources.getSystem().getAssets().getLocales(); 
    Arrays.sort(systemLanguages); 
    for (int i = 0; i < systemLanguages.length; i++) { 
     String sL = systemLanguages[i]; 
     Locale loc = new Locale(sL); 
     String locDisplayResults = loc.getDisplayLanguage(); 
     languagesList.add(new Languages(locDisplayResults)); 
     recyclerAdapter.notifyDataSetChanged(); 
    } 
} 

Die Idee ist, alle Sprachen auf einem bestimmten Gerät zum Anzeigen. Jede Hilfe wäre dankbar erhalten.

Bearbeiten: Testen zeigt, dass Resources.getSystem(). GetAssets(). GetLocales() tatsächlich gibt die Sprachen für jedes Gerät zur Verfügung. GetDisplayLanguage funktioniert jedoch nur für Zwei-Buchstaben-Tags und nicht für zwei Buchstaben-Strich-Zwei-Buchstaben (z. B. ar-eg). Noch mehr Ideen?

+0

So ist die Antwort war: [. Anstatt neue Locale verwenden (SL), verwenden Locale.forLanguageTag (sL)] (http://stackoverflow.com/questions/40427876/convert- da-dk-to-dänisch-dänemark-etc) Es hat perfekt funktioniert. –

Antwort

0

Versuchen

Locale[] availableLocales = Locale.getAvailableLocales(); 

for(Locale locale : availableLocales){ 
    Log.d("Locale", locale.getDisplayName()); 
} 
+0

Danke, aber das gibt mir alle unterstützten Locales von Java 8, nicht meine System-Locales. –

+0

Ich denke, das Problem mit Ihrem Aufruf von getLocales() ist seine API-Ebene, die 24 ist. Vielleicht hat Ihr Gerät eine niedrigere API. –

+0

Gibt es in diesem Fall eine andere Möglichkeit, die auf meinem Gerät verfügbaren Sprachen zu erhalten? Weil ich möchte, dass meine App für mehr Benutzer als nur Nougat verfügbar ist ... –