b代表什么,b + sr + Latn背后的语法是什么?

时间:2017-03-21 20:48:53

标签: android localization

默认情况下,Android一直以西里尔语显示塞尔维亚语,但自7.0以来,用户可以选择西里尔语和拉丁语。应用(主要来自Google)通常会将西里尔字符串放在sr中,拉丁字符串放在b+sr+Latn中。但是,b+sr+Latn与使用短划线的常规惯例(例如sr-rRS-port)非常不同。

b代表什么?什么是语法,我还可以用它来指定什么?

2 个答案:

答案 0 :(得分:12)

这是一个BCP 47语言标签。它以b开头,后跟语言,脚本,区域和变体 BCP 47 documentation

b+sr+Latn将是拉丁文的塞尔维亚语 b+sr+Latn+RS将是塞尔维亚的塞尔维亚语,拉丁文字。

同样适用于阿塞拜疆:
b+az+Latn - 拉丁文字
b+az+Cyrl - 西里尔文字 b+az+Arab - 阿拉伯文字

但你几乎可以做任何组合:
b+ja+Hrkt - 只有平假名和片假名的日语
b+ru+Latn - 带拉丁文字的俄语
b+hu+Hung - 匈牙利语与匈牙利符文脚本
b+en+Cyrl+US - 美国英语与西里尔字母
b+hy+Piqd+DE - 带克林贡文字的德国亚美尼亚语 (但支持非常有限)

另见:
ISO 639-3 language list
ISO 15924 script list
ISO 3166-1 alpha-2 country list

答案 1 :(得分:1)

从 Android 7.0 开始支持“b+”前缀。在语言标签列表中添加前缀“b+”告诉 Android 剩余的标签是 BCP 47 语言标签。

其他答案正确地提到了定义这些标签的文档:https://tools.ietf.org/html/bcp47

但是,在该文档中没有找到“b+”的使用。 Android 文档中阐明了“b+”背后的具体含义:

<块引用>

要使用 BCP 47 语言标签,连接 b+ 和两个字母的 ISO 639-1 语言代码,可选后跟附加子标签 以 + 分隔。

来源:https://developer.android.com/guide/topics/resources/providing-resources

代码中的其他参考:

<块引用>

一个 BCP 47 语言标签。 BCP-47 标签使用 + 而不是 - 作为 分隔符,并带有前缀 b+。因此,BCP-47 标签 “zh-Hans-CN”将改为“b+zh+Hans+CN”。

来源: https://android.googlesource.com/platform/tools/base/+/master/sdk-common/src/main/java/com/android/ide/common/resources/configuration/LocaleQualifier.java