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

时间:2011-06-02 02:22:02

标签: android localization

使用Custom locale in android时,目录名称为

res/drawable-en-rUS
res/values-fr-rCA

其中-r指定说出该语言的区域(国家/地区)。

指定区域变体时呢?我的客户要求我们支持英语,中文和三(3)种日语。 (*)

我使用customized Application class设置了区域设置,并且代码如下:

locale = new Locale(lang, country);
Locale.setDefault(locale);
config.locale = locale;
mContext.getResources().updateConfiguration(config,mContext.getResources().getDisplayMetrics());

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

/res/drawable-en
/res/drawable-cx
/res/drawable-ja
/res/drawable-ja-rHI
/res/drawable-ja-rFU

这个有效;最下面的两个条目是黑客。我正在使用虚构的国家/地区名称作为区域,当我实际需要它们像

/res/drawable-ja-rJP-vHI
/res/drawable-ja-rJP-vFU

指定日本境内的变体。

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

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

如果我将其用作

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

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

我在Providing Alternative Application Resources上找到的最佳资源并未显示如何执行此操作。

(*)他们要求这些日语版本:

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

2 个答案:

答案 0 :(得分:2)

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

即使有可能采用其他方式,您使用的变体无论如何都不是区域变体,只是编写相同内容的不同方式。 (就个人而言,我是混合的忠实粉丝,但我仍然只知道大约300个汉字,所以这有时会让我陷入困境......但它足以绕过去!)

答案 1 :(得分:1)

Locale Variant的目的是提供其他选项,例如不同的排序或不同的语言变体(挪威语就是这种情况)。这不是为您使用它而设计的。
当然,如果我有像你这样的要求,我会尝试加载整个不同的资源集(保留Locale)。但是,这远不是一件容易的事。当然,维护将是一场噩梦。