默认情况下,Android一直以西里尔语显示塞尔维亚语,但自7.0以来,用户可以选择西里尔语和拉丁语。应用(主要来自Google)通常会将西里尔字符串放在sr
中,拉丁字符串放在b+sr+Latn
中。但是,b+sr+Latn
与使用短划线的常规惯例(例如sr-rRS-port
)非常不同。
b代表什么?什么是语法,我还可以用它来指定什么?
答案 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”。