android 多语言设置没法切到印尼语

转自:http://zhanglu0574.blog.163.com/blog/static/113651073201591623152361/


在做多语言的时候,国家都可以直接用

config.locale = Locale.CHINA;或者config.locale = new Locale("ru");这样直接调用到,但是印尼的时候使用config.locale = new Locale("id");确获取不到,文件名也是values-id,改成了"id-ID"后可以,但是后来发现有些手机还是获取不到。

参考来源:http://www.csdn123.com/html/exception/566/566011_566013_566014.htm

Android国际化(一)语言、国家/区域代码

当你在开发Android应用时或Android系统时,如果希望自己的产品在全球或多国上市进行销售时,那么国际化的工作必不可少。Android系统的国际化需要在应用所在目录res文件夹下建立针对不同语言或地区的values文件夹,那么具体应该怎样进行命名,最终结构又是怎么样的呢?

例:

AndroidDemo //应用名称

     |
     |_____res //Android
应用资源根目录

        |

        |_____values

               |_____ strings.xml

               |_____ colors.xml

               |_____ dimens.xml

               |_____ styles.xml

        |

        |_____values-zh-rCN //汉语

               |_____ strings.xml

               |_____ colors.xml

               |_____ dimens.xml

               |_____ styles.xml

        |_____values-de //德语

        |

        |.......


查看AndroidAPIvalues可以支持很多属性,具本参见http://developer.android.com/guide/topics/resources/providing-resources.html


此处我们只针对values后添加语言,国家/区域代码的情况进行说明

values-zh-rCNvalues固定部分,zh:表示语言代码,rCN:表示区域代码,其中r为固定保留值。

Android中的语言代码规范遵循的是ISO639-1,区域代码遵循的是ISO3166-1

以下我们对ISO639-1ISO3166-1标准进行一个简单说明:

1)ISO639-1

从命名中我们也可直接看出ISO639-1ISO 639国际标准的一部分。ISO639ISO组织为各语言制定的国际标准。ISO639长期的演变过程中一共出现了6个部分,分别为:ISO639-1ISO 639-2ISO639-3ISO 639-4ISO639-5ISO 639-6

具体的详情请参考:

http://zh.wikipedia.org/wiki/ISO_639

http://zh.wikipedia.org/wiki/ISO_639-1%E4%BB%A3%E7%A0%81%E8%A1%A8


2)ISO3166-1

同样ISO3166-1也是ISO3166国际标准的一部分。ISO3166ISO组织针对国家和地区代码而制订的国际标准。ISO3166一共有三部分组成:ISO3166-1ISO 3166-2ISO3166-3

具体的详情请参考:

http://zh.wikipedia.org/wiki/ISO_3166

http://zh.wikipedia.org/wiki/ISO_3166-1


*注意:

在java.utils.Locale.java类中有如下一段注释:

 * <p>Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language
 * code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This
 * rewriting happens even if you construct your own {@code Locale} object, not just for
 * instances returned by the various lookup methods.

以下几种语言使用时,Android与ISO 639-1有所有区别,主要是由于历史问题引起的,要特别注意

 语言中文 语言英文  ISO 639-1   Android

 希伯来语   Hebrew             he              iw

 印尼语      Indonesian        id                in

 依地语      Yiddish               yi                ji

values-he 等价 values-iw

values-id  等价 values-in

value-yi 等价 values-ji

以上三个为物殊情况,其它语言严格遵循ISO 639-1规范



看了这个之后将local的改成in,但是values没改,但是不知道为何还是不对,最终将values也改成了values-in才成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章