Android:在应用中设置语言

时间:2012-05-25 09:09:34

标签: android localization

我想在我的应用程序中更改我的应用程序语言,因为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中获取,以及如何保存选择的语言用户?

2 个答案:

答案 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文件夹,则可以设置语言。

祝你好运,Hossein:)