我想在我的应用程序中更改我的应用程序语言,因为android语言没有我想要使用的所有语言。所以我改变了这个:
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
但是,当用户打开应用并进行更改时。然后,当时显示的字符串仍然是在创建新Activity
时更改的旧语言。
其他问题,我应该以某种方式保存选择的用户语言,然后在启动应用程序时更改语言。
那么如何改善呢?我希望当用户选择语言时,所有字符串都将从选择语言strings.xml中获取,以及如何保存选择的语言用户?
答案 0 :(得分:0)
您可以使用SharedPreference存储用户的语言。以下是有关它的文档:http://developer.android.com/reference/android/content/SharedPreferences.html
关于重新加载活动的需求,您可以在此处找到一些答案:Android: locale(system Language) change effect my application layouts
答案 1 :(得分:0)
您可以使用public class Share
之类的静态成员创建公共类(public static String language = "en";
)。您可以在整个项目中使用代码Share.language
轻松访问此类的字段。如果您想更改语言,可以设置Share.language = "fa";
。要使用所选语言重新加载活动,您应该在任何活动super.onCreate(saveInstanceState);
之前放置以下代码:
Locale l = new Locale(Shares.language);
Locale.setDefault(l);
Configuration config = new Configuration();
config.locale = l;
context.getApplicationContext().getResources()
.updateConfiguration(config, null);
请注意,如果values-language
文件夹中有/res
文件夹,则可以设置语言。