让用户在应用程序级别选择语言

时间:2013-07-15 10:26:49

标签: android internationalization

我已经本地化了我的Android应用程序,当用户在设备上切换本地文本时,会显示本地化文本。

但是,如果用户实际上希望我的应用程序以英语显示文本并且仍然不更改其语言环境,该怎么办?我可以在我的应用程序中做任何事情,比如询问他是否想要在我的应用程序级别设置区域设置。如果他选择这样,我将如何让我的应用程序假定使用英语而不是德语的语言环境(我的意思是有没有像setDefaultLocale()这样的API?

1 个答案:

答案 0 :(得分:1)

参考: - refer here

<activity
    android:name=".ui.SomeActivity"
    android:configChanges="locale"
    :
    :
</activity>

然后在您的活动中从onCreate调用这样的方法:

public static void setLanguage(Context context, String languageToLoad) {
    Log.d(TAG, "setting language");
    Locale locale = new Locale(languageToLoad); //e.g "sv"
    Locale systemLocale = SystemLocale.getInstance().getCurrentLocale(context);
    if (systemLocale != null && systemLocale.equals(locale)) {
       Log.d(TAG, "Already correct language set");
       return;
    }
    Locale.setDefault(locale);
    android.content.res.Configuration config = new android.content.res.Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
    Log.d(TAG, "Language set");
}