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?
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. –