2017-07-13 4 views
0

Android 7.0以降、多言語ユーザー向けのAndroid言語とロケールサポートが改善されました。Android 7.0以上のマルチリンガルサポートは機能しません

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

しかし、それは私が考えたものを正確に動作しません。ここ

ここRES /レイアウト/ 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> 

はここRES /値/の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> 

であるRES /値-KO /のstrings.xml

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

ここにはres/values-zh/strings.xmlがあります。

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

そしてここでは、RES /値-JA/

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

そして、私のテストデバイスが優先されるロケール設定のstrings.xmlである "KO> ZH> JA" 私はそれがこのように印刷されるべきだと思う

最初KO

第ZH

第JA

しかし、この

最初KO

ように印刷しました

秒デフォルト

第三デフォルト

それは次のように印刷された理由を私は理解できません。

テストプロジェクトをここにアップロードします。

https://github.com/kimhc999/LanguagePriorityTest

IギャラクシーS7(7.0)、PIXEL(8.0プレビュー3)、及びエミュレータ(7.0、7.1、8.0)でそれを試験しました。しかし、それらのすべてが同じ結果を持っています。

誰でも手伝ってもらえますか?

ありがとうございます。

+0

3言語は表示されません。あなたのデバイスはコです、そしてあなたはアプリにコウ –

+0

@ヤンビンを示しています彼らはマルチ言語設定のAndroid 7.0をサポートし、私は "ko> zh> ja"を設定します。しかし、1つの言語のみを表示しますか? –

答えて

1

予想通りに動作していますが、間違った方法で認識しています。あなたのアプリのデフォルト言語は英語で、すべての値を文字列に入れました。お使いの携帯電話の

<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> 

言語次のようなXMLがkoであり、あなたはここでその

のためにのみ1つの値を置いているのres /値-KO /のstrings.xml

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

あなたをアプリケーションを実行すると、最初にの値-koというフォルダ内の値が検索され、そこに値が存在しない場合は、デフォルト値が英語の値/ strings.xmlから選択されます。それは、デフォルト値のフォルダから値を選択し、あなたが正しい結果を得ているsecond_testためとthird_testよう

としてのみfirst_test値-KOで提供されています:

最初のKO

秒デフォルト

第3デフォルト

+0

次に、私のデバイスが "値 - 恋人"を見つけられなかった場合、 "値-zh"を検索し、次に "zh"と "デフォルト"のみを表示するのでしょうか? 私のデバイスが表示できるロケールとデフォルトは1つだけですか? –

+0

いいえ、デバイスが値を見つけられなかった場合は、デフォルトで直接表示されます。 –

+0

ありがとうございます。しかし、私はこの文書が何を意味するのだろうか? https://developer.android.com/guide/topics/resources/multilingual-support.html このリンクの「表3」をご覧ください。このドキュメントでは、Android 7.0を起動する第2のユーザー設定ロケールにも注意を払っています。 7.0、7.1、8.0のプレビューでテストしました。 –

関連する問題