我有一个工作语言切换器,以便用户可以更改语言。
当我想添加基西语(几内亚当地语言)时,挑战就来了。我已经从
official为此
kq-rGN
制作了本地代码
当我运行应用程序时,我可以选择语言,但显示默认英语。
如果我查看翻译编辑器。它在语言选项卡和应用程序中显示
null
,当语言为英语时,会出现 kq
而不是 English
。
它实际上可以在旧的 Android 版本(如 4)上运行,但在较新的 Android 版本上则不起作用。
数组的XML定义和设置语言的代码
<string-array name="language_codes">
<item>en-rUS</item>
<item>kq-rGN</item>
</string-array>
String lang = listCodeItems[position].substring(0, 2);
String country = listCodeItems[position].substring(listCodeItems[position].length() - 2);
LocaleHelper.setLocale(mContext, lang, country);
recreate();
问题如何让稀有语言发挥作用?
根据Google,这就是解决方案
AppCompatDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(locale));
并且不要使用区域标签 r。就像我的例子一样
kq-GN
注意!此代码适用于 Android Tiramisu 及更高版本
我的问题是,即使这个代码也不起作用。使用此代码,应用程序不会更改为任何语言。如果我尝试运行这个
AppCompatDelegate.getApplicationLocales().toString());
我得到这个输出
[]
我什至在切换语言之前就得到了这个结果,所以看来这里有问题。