我有一个Android应用程序,我想翻译成塞尔维亚语,我想要两种语言的变体:拉丁字母和西里尔字母。
我试过这个变种: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
在有关res dirs和Locale的Android文档中,我找不到此选项。
我可以使用2种语言变体制作2个目录吗?怎么样?
谢谢
答案 0 :(得分:2)
自Android 7.0以来,塞尔维亚语已经正式列入拉丁文。 values-sr
仍用于西里尔字母,values-b+sr+Latn
用于拉丁文字。
values-sr
西里尔字母
拉丁文values-b+sr+Latn
答案 1 :(得分:1)
我刚测试了Android本地化,我发现你可以使用任意区域,它会起作用。
在项目中添加一个名称为values-sr-rZZ
的文件夹,其中ZZ是一个从未存在的虚构区域。
然后将以下代码添加到Application类中,我从here获取并略微更改:
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
)中选中了一些复选框时,才会更改语言环境。
您可以使用其他条件并根据需要进行更改。
此类动态更改语言的方式也可能会在旧设备上出现菜单项错误,但不会在较新的设备上重现。