Wie können wir die aktuelle Sprache auf dem Android-Gerät auswählen lassen?
android
localization
Pinki
quelle
quelle
Antworten:
Wenn Sie die ausgewählte Sprache Ihres Geräts erhalten möchten, kann dies Ihnen helfen:
quelle
Locale.getDefault().getLanguage();
, um den üblichen Sprachcode abzurufen (z. B. "de", "en").Locale.setDefault("ru")
wird auf Englisch, und die Sprache in den Systemeinstellungen festgelegt, dann MethodeLocale.getDefault().getLanguage()
zurückkehren „ru“ , aber nicht „en“ . Gibt es eine andere Methode, um ein echtes SYSTEM-Gebietsschema / eine echte SYSTEM-Sprache zu erhalten? Ich habe hier keine dokumentierte Lösung gefunden , aber gibt es eine elegantere Lösung?Locale.getDefault().toString()
eine Zeichenfolge, die das Gebietsschema vollständig identifiziert, z. B. "en_US".Ich habe die Locale-Methoden auf meinem Android 4.1.2-Gerät und die Ergebnisse überprüft:
quelle
Locale.getDefault().getDisplayLanguage()
welche Rückkehr"English"
Was für mich funktioniert hat war:
Resources.getSystem()
Gibt ein globales freigegebenes Ressourcenobjekt zurück, das nur Zugriff auf Systemressourcen (keine Anwendungsressourcen) bietet und nicht für den aktuellen Bildschirm konfiguriert ist (kann keine Dimensionseinheiten verwenden, ändert sich nicht basierend auf der Ausrichtung usw.).Da dies
getConfiguration.locale
jetzt veraltet ist, ist der bevorzugte Weg, um das primäre Gebietsschema in Android Nougat zu erhalten ,:Um die Kompatibilität mit den vorherigen Android-Versionen zu gewährleisten, wäre eine mögliche Lösung eine einfache Überprüfung:
Aktualisieren
Beginnend mit der Support-Bibliothek müssen
26.1.0
Sie die Android-Version nicht überprüfen, da sie eine bequeme Methode bietet, die abwärtskompatibel istgetLocales()
.Rufen Sie einfach an:
quelle
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
getLocales
Weg. Ich habe meine Antwort aktualisiert.Sie können die Sprache aus dem aktuellen Gebietsschema "extrahieren". Sie können das Gebietsschema über die Standard-Java-API oder über den Android-Kontext extrahieren. Zum Beispiel sind die beiden folgenden Zeilen äquivalent:
quelle
Locale.setDefault()
vorher mit einem anderen Gebietsschema an und Sie erhalten andere Ergebnisse.Um anderen Zeit und / oder Verwirrung zu ersparen, wollte ich mitteilen, dass ich die beiden oben von Johan Pelgrim vorgeschlagenen Alternativen ausprobiert habe und sie auf meinem Gerät gleichwertig sind - unabhängig davon, ob der Standardspeicherort geändert wurde oder nicht.
Die Standardeinstellung meines Geräts ist also Englisch (United Kindom). In diesem Zustand liefern erwartungsgemäß beide Zeichenfolgen in Johans Antwort das gleiche Ergebnis. Wenn ich dann das Gebietsschema in den Telefoneinstellungen ändere (z. B. italiano (Italia)) und erneut ausführe, geben beide Zeichenfolgen in Johans Antwort das Gebietsschema als italiano (Italia) an.
Daher halte ich Johans ursprünglichen Beitrag für richtig und Gregms Kommentar für falsch.
quelle
Wie in der Gebietsschema-Referenz beschrieben, ist der beste Weg, um Sprache zu erhalten ,:
Diese Methode gibt einen String mit einer Sprach-ID gemäß ISO 639-1 zurück
quelle
Sie können dies verwenden
wenn "xx" ein beliebiger Sprachcode wie "en", "fr", "sp", "ar" ist ... und so weiter
quelle
Wenn die API-Ebene 24 oder höher ist, verwenden Sie
LocaleList.getDefault().get(0).getLanguage()
else useLocale.getDefault.getLanguage()
Referenz: https://developer.android.com/guide/topics/resources/multilingual-support
quelle
Zur Antwort von Johan Pelgrim hinzufügen
sind äquivalent, weil die
android.text.format.DateFormat
Klasse beide austauschbar verwendet, zund
quelle
Sie können versuchen, das Gebietsschema aus den Systemressourcen abzurufen:
quelle
Die obigen Antworten unterscheiden nicht zwischen einfachem Chinesisch und traditionellem Chinesisch.
Locale.getDefault().toString()
funktioniert, die "zh_CN", "zh_TW", "en_US" usw. zurückgibt.Verweise auf: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 ist ALT.
quelle
Diese Lösung hat bei mir funktioniert. Dadurch erhalten Sie die Sprache des Android-Geräts (nicht die Landessprache der App).
Dies gibt "en" oder "de" oder "fr" oder was auch immer Ihre Gerätesprache eingestellt ist zurück.
quelle
Mit diesem Code können Sie den aktuellen Tastaturstatus ermitteln
quelle
Es gibt zwei Sprachen.
Standardsprache des Betriebssystems:
Aktuelle Anwendungssprache:
quelle
Wenn Sie eine Sprache wählen, die Sie nicht eingeben können, kann dieses Griechisch hilfreich sein.
Versuchen Sie es jetzt mit Griechisch
quelle
Wenn Sie eine aktuelle Sprache überprüfen möchten, verwenden Sie die Antwort von @Sarpe (@Thorbear):
quelle
DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
.quelle
Der richtige Weg, um die Sprache Ihres Geräts zu erhalten, ist der folgende:
Ich hoffe es hilft.
quelle
Sie erhalten beispielsweise einen
Written
Namen für die Sprache, z.English, Dutch, French
wird Ihnen
language code
zum Beispiel geben:en, nl, fr
Beide Methoden geben String zurück
quelle
quelle
Die anderen haben gute Antworten für die Gerätesprache gegeben,
Wenn Sie möchten, dass die App- Sprache am einfachsten funktioniert, fügen Sie
app_lang
Ihrerstrings.xml
Datei einen Schlüssel hinzu und geben Sie die Sprache für jede der langs an.Wenn sich die Standardsprache Ihrer App von der Gerätesprache unterscheidet, können Sie diese auf diese Weise als Parameter für Ihre Dienste senden.
quelle
quelle
Meine Lösung ist so
und dann
gezeigt ---> en
quelle
Hier ist der Code, um das Geräteland zu erhalten. Kompatibel mit allen Versionen von Android sogar Oreo.
Lösung: Wenn der Benutzer keine SIM-Karte als Land hat, wird er während der Telefoneinrichtung oder der aktuellen Sprachauswahl verwendet.
quelle
Wenn Sie eine bestimmte Aufgabe für Benutzer mit Wohnsitz in Indien ausführen möchten, die Hindi sprechen, verwenden Sie die folgende Bedingung
quelle