Android本地化问题

AmI*_*ord 11 android localization

我正在翻译应用程序.看看这个,我可以看到很多国家都有几种语言代码.

我尝试为NorwegianBokmål创建一个名为values-nb的文件夹.我将手机上的语言环境改为挪威语.这适用于我的Sony Ericson Xperia 8,但不适用于三星Galaxy Tab.

然后我尝试将文件夹重命名为values-no.它现在可以在galaxy选项卡上运行,但不适用于xperia.我创建了两个文件夹,它的工作原理.但后来我必须在每个文件夹中放入相同的文件!

如果有人选择了Norwegian Nynorsk,我是否必须创建另一个文件夹,以便他们不会默认使用英语而是获得挪威文本?值-NN?

我想我的问题是这样的:我如何让这个工作?我可以制作所有这些文件夹,然后让它们引用值 - 不是吗?请帮忙 :)

Eri*_*ger 12

根据当前的搜索规则,没有办法只针对特定国家/地区进行本地化,并且能够搜索所有语言.至少这是我通过阅读http://developer.android.com/guide/topics/resources/localization.html上的页面的理解 你需要创建值-nn-rNO,values-nb-rNO和values-no -rNO并具有重复的strings.xml条目.

我没有尝试过,但请查看http://developer.android.com/guide/topics/resources/providing-resources.html#AliasResources中的字符串别名


skv*_*len 9

我知道这是一个旧的,但是将n,nb和nn组合为no是一个技巧:

Locale locale = getResources().getConfiguration().locale;
if (locale.getLanguage().equals("no") || locale.getLanguage().equals("nb") || locale.getLanguage().equals("nn")){
    locale = new Locale("no","NO");
    Configuration config = new Configuration();
    config.locale = locale;
    Resources res = getBaseContext().getResources();
    res.updateConfiguration(config, res.getDisplayMetrics());
}
Run Code Online (Sandbox Code Playgroud)

  • 很酷的技巧,但你应该使用res.getConfiguration()而不是创建一个新的配置对象.不想丢失其他配置数据(字体缩放等) (2认同)