Android getString()多语言无法正常工作

时间:2016-12-20 15:15:23

标签: android localization multilingual android-7.0-nougat

我使用以下前提条件创建了一个简短的测试应用程序:

我的智能手机在7.0(及以上)上运行。我在我的设置中设置了多种语言English (United States)& Deutsch (Deutschland)

这是我的应用设置:

compile-, target-, min-SdkVersion 24

String-Resources

enter image description here

来自strings.xml"default")的内容为:

<resources>
    <string name="app_name">Test</string>
    <string name="test">default</string>
</resources>

来自string.xmlvalues-en-rGB)的内容是:

<resources>
    <string name="test">GB Fallback!</string>
</resources>

MainActivity只有onCreate(),代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final String string = getString(R.string.test);
    Log.d("TestString", string);

    final LocaleList locaList = LocaleList.getDefault();
    for (int i = 0; i < locaList.size(); i++) {
        Log.d("AvailableLocale", locaList.get(i).toLanguageTag());
    }
}

当我运行App时,我预计"TestString"的输出为GB Fallback!。为什么?因为Android 7.0支持multilingual。 *(见更新)

而不是GB Fallback!我总是得到默认输出。这意味着default

AvailableLocale的输出始终与手机设置中的设置保持同步。

因此。为什么我从default获得getString(R.string.test)。我是否想念Android文档中的多语言内容?

*更新

为什么我声称我得到GB Fallback!。原因是multilingual功能。文档显示了一个很好的表: enter image description here 我会尝试将它映射到我的情况:

(抱歉,我的图片错了。我的意思不是de-GB。当然是en-GB enter image description here

那么,这里有什么问题?

0 个答案:

没有答案