制作多语言的android应用程序

Akb*_*bar 5 multilingual android localization samsung-mobile

我创建了多语言(英语,俄语,乌兹别克语)应用程序.我将4个字符串resoureses放在4个文件夹(values,values-en,values-ru,values-uz)中作为docs.当我在App Controller中更改应用程序语言更新资源时,如下所示:

 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());
Run Code Online (Sandbox Code Playgroud)

之后通过调用App控制器的方法重新启动应用程序,如下所示:

public void reStart() {
    Intent i = getBaseContext().getPackageManager()
            .getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)

在他们之后它几乎适用于所有设计.但在三星Galaxy S6(SM-G920F)上,它的工作原理很疯狂.有些词是英语,有些是乌兹别克语和ets.那么,如何修复此错误?是不是(适用于)所有设备支持的"支持不同语言"的概念?顺便说一句,我已经检查过所有资源都是用相应的语言给出的(如附图所示):

在此输入图像描述

Akb*_*bar 2

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

getSupportActionBar().setTitle(R.string.title_activity_followers);
Run Code Online (Sandbox Code Playgroud)

问题解决了。