Dan*_*das 5 android android-resources
我有一个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个dirs吗?如何?
谢谢
从 Android 7.0 开始,正式收录了带有拉丁文字的塞尔维亚语。values-sr仍用于西里尔字母,values-b+sr+Latn用于拉丁字母。
values-sr西里尔文
values-b+sr+Latn拉丁文
我刚刚测试了 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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,仅当用户选择塞尔维亚语言作为默认语言 ( conf.locale.getLanguage().equals("sr")) 并且还选中了应用程序首选项 ( isLatinAlphabet) 中的某些复选框时,区域设置才会更改。
您可以使用不同的条件并根据需要进行更改。
此外,这种动态更改语言的方式可能会在旧设备上的菜单项中出现错误,但在较新的设备上不会重现。