制作多语言安卓应用程序

5
我创建了一个多语言(英语,俄语,乌兹别克语)应用程序。我将4个字符串资源放在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());

之后,通过调用App控制器的以下方法,应用程序将重新启动:
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


三星喜欢按照自己的方式进行。我发现他们并不总是遵循标准(在某些方面)。 - Neil Locketz
当您更改设备语言而不是以编程方式进行更改时,是否会遇到相同的问题? - DeeV
那我接下来该做什么呢?@NeilLocketz - Akbar
1
您不需要通过编程更改语言,语言必须由用户设置定义。当用户更改设备语言时,您的资源将自动更改。 - Lucas Queiroz Ribeiro
该应用程序是为多语种受众创建的。需要在应用程序内部切换语言。客户明确要求了此功能。 - Akbar
1个回答

2

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

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

问题已解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接