2016-09-27 138 views
5

我创建了多语言(英语,俄语,乌兹别克语)应用程序。我把4个字符串资源放在4个文件夹中(值,values-en,values-ru,values-uz)为docs。当我更改应用程序语言的更新资源的开发配置应用程序控制器类似如下:使多语言Android应用程序

Settings.LANGUAGE = prefs.getString(User.LANG, Settings.RUSSIAN); 
Locale locale = new Locale(Settings.LANGUAGE); 
Locale.setDefault(locale); 
Configuration configuration = new Configuration(); 
configuration.locale = locale; 
getBaseContext().getResources().updateConfiguration(configuration, 
    getBaseContext().getResources().getDisplayMetrics()); 

该应用程序重新启动后,通过调用应用程序控制器的方法,象下面这样:

public void reStart() { 
    Intent i = getBaseContext().getPackageManager() 
      .getLaunchIntentForPackage(getBaseContext().getPackageName()); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
} 

他们之后它运作良好,几乎所有的图谋。但在三星Galaxy S6(SM-G920F)上,它的工作原理非常疯狂。有些词语是英文的,其他词语是乌兹别克语和英语。 那么,如何解决这个错误?是不是支持所有设计(适用于)的“支持不同语言”的概念? 通过我已经检查了所有资源的开发都在相应的语言给出(如图附图片)的方式:

enter image description here

+0

三星喜欢在那里做自己的事情....:我发现,他们并不总是遵循标准(几件事) –

+0

不要更改设备语言时,而不是像编程你得到了同样的问题那? – DeeV

+0

那我该怎么做? @NeilLocketz –

回答

2

从我的观察,怪异的行为影响了唯一的活动标题,我发现我是在Manifest文件中设置活动标题的翻译。只有这些翻译是行为不端。所有其他动态设置的翻译工作正常。 因此,要解决这个问题,我删除从清单文件中的所有活动标签,然后设置活动标题中,如下所示onCreate方法:

getSupportActionBar().setTitle(R.string.title_activity_followers); 

问题解决了。