2017-07-13 3 views
0

Ab Android 7.0 wurde die Unterstützung von Android-Sprache und Ländereinstellungen für mehrsprachige Benutzer verbessert.Mehrsprachige Unterstützung für Android 7.0 und höher funktioniert nicht

https://developer.android.com/guide/topics/resources/multilingual-support.html

Aber es funktioniert nicht genau das, was ich dachte.

Hier res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.tistory.httphckim999.languageprioritytest.MainActivity" 
    android:orientation="vertical"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/first_test" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/second_test" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/third_test" /> 
</LinearLayout> 

Hier res/Werte/strings.xml

<resources> 
    <string name="app_name">Language Priority Test</string> 
    <string name="first_test">first default</string> 
    <string name="second_test">second default</string> 
    <string name="third_test">third default</string> 
</resources> 

Hier res/Werte-ko/strings.xml

<resources> 
    <string name="first_test">first ko</string> 
</resources> 

Hier ist res/Werte-zh/strings.xml

<resources> 
    <string name="second_test">second zh</string> 
</resources> 

Und hier ist res/Werte-ja/strings.xml

<resources> 
    <string name="third_test">third ja</string> 
</resources> 

Und meine Testgeräte Priorität Lokalisierungs-Einstellungen ist "ko> zh> ja"

Ich denke, sollte es so sein drucken .

erste ko

zweite zh

dritten ja

Aber es wie dieses

erste ko

gedruckt wurde

zweiter Standard

dritter Standard

Ich kann nicht verstehen, warum es so gedruckt wurde.

Ich lade mein Testprojekt hier hoch.

https://github.com/kimhc999/LanguagePriorityTest

ich es in Galaxy S7 (7,0) getestet, PIXEL (8.0 Preview 3) und Emulatoren (7,0, 7,1, 8,0). Aber alle haben das gleiche Ergebnis.

Kann mir jemand helfen?

Vielen Dank.

+0

Es wird nicht angezeigt, 3 Sprachen. Ihr Gerät ist ko, dann zeigt Ihnen die App –

+0

@YanbinHu Sie sagen, sie unterstützen Multi-Sprache Einstellung starten Android 7.0 und ich setze "ko> zh> ja". Aber zeige nur eine Sprache? –

Antwort

1

Es funktioniert in erwarteter Weise, Sie nehmen es auf falsche Weise wahr. In Ihrer App ist die Standardsprache Englisch und Sie haben alle Werte in Zeichenfolgen platziert.xml folgend

<resources> 
    <string name="app_name">Language Priority Test</string> 
    <string name="first_test">first default</string> 
    <string name="second_test">second default</string> 
    <string name="third_test">third default</string> 
</resources> 

Sprache Ihres Telefons ist ko und Sie platziert nur 1 Wert für die

Hier res/Werte-ko/strings.xml

<resources> 
    <string name="first_test">first ko</string> 
</resources> 

Wenn Sie Führen Sie die Anwendung zuerst nach Wert in values-ko Ordner suchen und wenn Wert dort nicht verfügbar ist dann wird der Standardwert aus Werten/strings.xml ausgewählt, die in Ihrem Fall Englisch ist.

Da nur first_test verfügbar ist in Werte-ko so für second_test und third_test wird es Werte von den Standardwerten Ordnern auswählen und Sie bekommen richtiges Ergebnis:

erste ko

zweiter Standard

dritter Standard

+0

Dann, ist es meine, wenn mein Gerät nicht gefunden werden konnte "Werte-ko", dann wird es nach "values-zh" suchen und dann, wird es nur "zh" und "default" angezeigt? Bedeutet das, dass mein Gerät nur ein Gebietsschema und Standard anzeigen kann? –

+0

Nein, wenn das Gerät keine Werte gefunden hat - ko zeigt es dann direkt den Standardwert an. –

+0

Danke. Aber ich frage mich, was dieses Dokument bedeutet? https://developer.android.com/guide/topics/resources/multilingual-support.html Bitte siehe "Tabelle 3" in diesem Link. Dieses Dokument sagt, dass sie auch das zweite Gebietsschema des Benutzers berücksichtigen, das Android 7.0 startet. Und ich habe auf 7.0, 7.1, 8.0 Vorschau getestet. –

Verwandte Themen