语言资源

时间:2014-10-24 19:38:42

标签: java android

我试图让我的申请多语言。但是我在使用正确的语言获取字符串数组时遇到了困难。它适用于应用程序中的其他任何位置,但它在我的导航抽屉中失败。是否有一些我缺少的东西,我认为它与上下文有关,但我不确定。

我使用的代码是:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    Context context = getActivity();

    // Change the application language
    Resources res = context.getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    android.content.res.Configuration conf = res.getConfiguration();
    conf.locale = new Locale("es");
    res.updateConfiguration(conf, dm);

    mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(), android.R.layout.simple_list_item_1, android.R.id.text1, res.getStringArray(R.array.drawer_activities)));
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
    return mDrawerListView;
}

它确实成功获取了字符串数组,但它获得了英语的默认语言。它不会加载其他语言。

1 个答案:

答案 0 :(得分:1)

在你的strings.xml中你应该这样做:

<string name="one">one</string>
<string name="two">two</string>
<string name="three">three</string>

<string-array name="numbers">
    <item>@string/one</item>
    <item>@string/two</item>
    <item>@string/three</item>
</string-array>

现在你必须对其他语言(例如西班牙语)做同样的事情,你可以使用与上面相同的模式使用你的strings-es.xml和 uno,dos,tres

<string name="one">uno</string>
<string name="two">dos</string>
<string name="three">tres</string>

<string-array name="numbers">
    <item>@string/one</item>
    <item>@string/two</item>
    <item>@string/three</item>
</string-array>