语言目录的资源目录名称?

Thu*_*bit 5 android localization

在android中使用自定义语言环境时,目录名称例如

res/drawable-en-rUS
res/values-fr-rCA
Run Code Online (Sandbox Code Playgroud)

-r指定使用该语言的地区(国家)。

什么时候指定区域不同?我的客户要求我们支持英语,中文以及三(3)个日语变体。(*)

我使用自定义的Application类设置语言环境,并编写如下代码:

locale = new Locale(lang, country);
Locale.setDefault(locale);
config.locale = locale;
mContext.getResources().updateConfiguration(config,mContext.getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

并正在使用这样命名的资源目录:

/res/drawable-en
/res/drawable-cx
/res/drawable-ja
/res/drawable-ja-rHI
/res/drawable-ja-rFU
Run Code Online (Sandbox Code Playgroud)

虽然这有效 ; 最下面的两个条目是黑客。我实际上以虚构的国家/地区名称作为区域,例如

/res/drawable-ja-rJP-vHI
/res/drawable-ja-rJP-vFU
Run Code Online (Sandbox Code Playgroud)

指定日本境内的变体。

还有另一个Locale()构造函数,即

Locale(String language, String country, String variant);

如果我用这个

locale = new Locale("ja", "JP", "hi");

如何指定资源目录,包括语言,区域和变体

我在提供替代应用程序资源中找到的最好的资源没有显示如何做到这一点。

(*)他们请求了这些日语变体:

  • 仅平假名
  • 平假名与汉字上方的假名
  • 汉字+平假名正常

Geo*_*its 2

这样做的问题是您无法将变体指定为资源文件夹。据我所知,该variant字符串的唯一目的是能够将其显示给用户。老实说,我认为你的“黑客”可能是解决这个问题的最佳方法。

即使可以通过其他方式实现,您使用的变体无论如何都不是真正的区域变体,只是编写同一事物的不同方式。(就我个人而言,我是混合汉字的忠实粉丝,但我仍然只知道大约 300 个汉字,所以这有时会给我带来麻烦……不过,这已经足够了!)