如何包括塞尔维亚语的两个变体?有拉丁字母和西里尔字母



我有一个安卓应用程序,我想翻译成塞尔维亚语,我想要语言的两种变体:与拉丁字母和西里尔字母。我尝试了这些变体:value-sr-rRS-Latn , value-sr-Latn , value-sr-rRS-Cyrl , value-sr-Cyrl但这些都不起作用。我得到这个错误:android-apt-compiler: [NAMEOFAPP] invalid resource directory name: [path]res/value-sr-rRS-Latn

在Android关于res dirs和Locale的文档中我找不到这个选项。

我可以用2种语言变体制作2个dirs吗?以及如何?

谢谢

自Android 7.0以来,塞尔维亚语与拉丁脚本已被正式包含。values-sr仍用于西里尔字母,values-b+sr+Latn用于拉丁字母。

values-sr for Cyrillic
values-b+sr+Latn for Latin

我刚刚测试了Android本地化,我发现你可以使用任意区域,它将工作。

在项目中添加一个名为values-sr-rZZ的文件夹,其中ZZ是一个从未存在过的虚构区域。

然后将以下代码添加到Application类,我从这里得到它并稍微更改:

public class MainApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Resources res = this.getResources();
        Configuration conf = res.getConfiguration();
        boolean isLatinAlphabet = PreferenceManager.getDefaultSharedPreferences(this)... // get a value from the application settings
        if(conf.locale.getLanguage().equals("sr") && isLatinAlphabet) {
            conf.locale = new Locale("sr", "ZZ");
            res.updateConfiguration(conf, res.getDisplayMetrics());
        }
    }
}

在这段代码中,只有当用户选择塞尔维亚语作为默认语言(conf.locale.getLanguage().equals("sr"))并勾选应用程序首选项(isLatinAlphabet)中的某些复选框时,区域设置才会更改。

您可以使用不同的条件,并根据自己的喜好进行更改。

同样,这种动态改变语言的方式可能会在旧设备上的菜单项中出现错误,但在新设备上不会重现。

最新更新