用国家/地区在Android中以编程方式更改语言

时间:2015-03-05 20:15:57

标签: android localization locale

我尝试在Android应用程序中更改我的语言环境。 如果我只使用语言一切都好,但今天我将葡萄牙语翻译添加到我的应用程序。

代码:

Locale locale;
        if(language.contains("-"))  // In this case, the locale specify also the country
        {
            String[] country_locale = language.split("-");
            locale = new Locale(country_locale[0], country_locale[1]); 
        }
        else
            locale = new Locale(language); 
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

一切都好,直到最后一行。 我知道,因为在我的程序的前一部分中,我可以使用以下代码获得带有正确的pt-br语言环境的字符串:

Resources resources = new Resources(ctx.getAssets(), ctx.getResources().getDisplayMetrics(), new_config);
如果使用国家/地区代码定义了区域设置,则

updateConfiguration将我的区域设置设置为英语。

String.xml位于values-pt-rBR

调试Locale值时设置为pt-BR。

编辑:经过进一步的测试,这适用于我的Android手机,但不能在我的平板电脑上运行(Sambung与Android 4.4.2)。 可能是什么原因?

编辑2:如果我使用手机也会在模拟器上工作,如果我使用平板电脑则无法工作。

1 个答案:

答案 0 :(得分:0)

在您当前的活动中,尝试在代码后调用以下内容:

finish();
startActivity(getIntent());

这将重新创建您的Activity,然后重新加载字符串资源。