如何根据用户选择更改应用程序语言?

时间:2015-07-30 10:13:20

标签: android lang

在我的项目中,用户可以选择语言。整个应用程序应该通过选择语言来改变。语言是从服务器端获取的。

我提到了各种网站和链接,但找不到更好的解决方案。本地化是不可能的,因为它是一个巨大的应用程序,并且语言不是固定的,它是从服务器端获取的,它可以变化。

是否有其他解决方案?请帮忙......

2 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

Locale locale = new Locale(languageCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, null);

这会将应用的区域设置设置为所需的区域设置,而不是更改设备上设置的全局区域设置。所有本机本地化机制都将与上下文区域设置一起使用。

答案 1 :(得分:1)

虽然不建议您为Android系统以外的应用使用单独的语言。但你仍然可以改变它。

以下是代码:

private void setLocale (String localeCode , Bundle b ){
    Log.d(TAG+"set location function: "+localeCode);
    locale = new Locale(localeCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    UserDetail.this.getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    onCreate(null);
}

对某些用户触发器使用此方法调用:

setLocale("en-us",savedInstanceStat); // for english
setLocale("ar",savedInstanceStat); // for arabic

要了解有关Android本地人的更多信息: http://www.icanlocalize.com/site/tutorials/android-application-localization-tutorial/

相关问题