一个任务由以下内容组成:需要为用户提供应用程序界面(ru,en,uk,以及默认选择en)的语言更改的可能性。为了实现这个功能,它已经完成:手动应用程序的本地化
1)创建资源文件夹:values,values - uk,values - ru,values - en,其中文件strings.xml包含内容转换。
2)通过Spinner获取并写入SharedPreferences语言ID。
3)在本土化的onCreate应用程序启动时:
SharedPreferences preferences = context.getSharedPreferences(Constants.APP_PREFERENCES, Context.MODE_PRIVATE);
String lang = preferences.getString(Constants.LANGUAGE, "default");
if (lang.equals("default")) {
lang=context.getResources().getConfiguration().locale.getCountry();
}
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
Log.i("Lang change", "Locale=" + locale);
context.getResources().updateConfiguration(config,
context.getResources().getDisplayMetrics());
几乎所有的拉起和应用,但不是全部。也就是说,在某些地方(在某些对话和BaseAdapters中,NavigationDrawer)会精确地提取系统语言的本地化。例如,在设备上的乌克兰本地化,默认情况下是英语,而俄罗斯是选择在一个应用程序,然后在一个应用程序在更高的指示位置总拉动除基本俄罗斯以外的乌克兰内容。
突破了onConfigurationChanged()来处理:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, null);
}
和从机器人的manifest.xml每个活动清洗:configChanges = “区域设置”。
没有帮助。
问题在哪里?