如果要实现Flutter的国际化,首先要知道Flutter是怎么表示语言环境,如何为语言环境分类。
在Flutter中,我们可以通过Locale来表示语言环境。
// zh-CN表示中文
const Locale local = Locale('zh', 'CN');
我们都知道zh-CN代表中文,那具体表示什么含义呢。其实Locale的表示是有专门标准的,Locale的底层是使用的是Unicode BCP47地区标识符标准(http://www.unicode.org/reports/tr35/ ),同时所有语言环境标签都必须经过IANA的认证,IANA维护了一个有效的语言文字标记注册表(https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry ) 。
而zh-CN就是符合上述标准且经过IANA认证的语言环境标签。
Language Tags(语言文字标记)格式规则如下:
language //语言文字种类,必须出现1次
["-" script] ;书写格式,出现0或1次
["-" region] ;国家地区,出现0或1次
*("-" variant) ;方言,出现0或多次
*("-" extension) ;扩展,出现0或多次
["-" privateuse] ;私人用途,出现0或1次
所以, zh-CN其实表达的含义是language-region(语言-区域)的意思。
所以,语言环境是通过这样的组合规则来区分的,一般通过language、script、region组合区分。比如:
language(主要语言文字种类):
zh Chinese 中国字或中国话
cmn Mandarin Chinese 普通话或國語发音
yue Yue Chinese 粤语
script(书写格式):
Hans simplified Chinese 规范汉字
Hant traditional Chinese 國字
region(国家地区):
CN CHINA 中国
HK HONG KONG 香港
Locale的构造方法就是通过指定languageCode、countryCode、scriptCode来初始化成不同的语言环境。比如:
// zh-CN中文
const Locale local = Locale('zh', 'CN');
// zh-Hans-CN以规范汉字书写的中国大陆用词
const Locale local = Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN');
// zh-Hans-HK以简体中文书写的香港地区用词
const Locale local = Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'HK');
如果要实现Flutter的国际化,首先要知道Flutter是怎么表示语言环境,如何为语言环境分类。
在Flutter中,我们可以通过Locale来表示语言环境。
// zh-CN表示中文
const Locale local = Locale('zh', 'CN');
我们都知道zh-CN代表中文,那具体表示什么含义呢。其实Locale的表示是有专门标准的,Locale的底层是使用的是Unicode BCP47地区标识符标准(http://www.unicode.org/reports/tr35/ ),同时所有语言环境标签都必须经过IANA的认证,IANA维护了一个有效的语言文字标记注册表(https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry ) 。
而zh-CN就是符合上述标准且经过IANA认证的语言环境标签。
Language Tags(语言文字标记)格式规则如下:
language //语言文字种类,必须出现1次
["-" script] ;书写格式,出现0或1次
["-" region] ;国家地区,出现0或1次
*("-" variant) ;方言,出现0或多次
*("-" extension) ;扩展,出现0或多次
["-" privateuse] ;私人用途,出现0或1次
所以, zh-CN其实表达的含义是language-region(语言-区域)的意思。
所以,语言环境是通过这样的组合规则来区分的,一般通过language、script、region组合区分。比如:
language(主要语言文字种类):
zh Chinese 中国字或中国话
cmn Mandarin Chinese 普通话或國語发音
yue Yue Chinese 粤语
script(书写格式):
Hans simplified Chinese 规范汉字
Hant traditional Chinese 國字
region(国家地区):
CN CHINA 中国
HK HONG KONG 香港
Locale的构造方法就是通过指定languageCode、countryCode、scriptCode来初始化成不同的语言环境。比如:
// zh-CN中文
const Locale local = Locale('zh', 'CN');
// zh-Hans-CN以规范汉字书写的中国大陆用词
const Locale local = Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN');
// zh-Hans-HK以简体中文书写的香港地区用词
const Locale local = Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'HK');
如果要实现Flutter的国际化,首先要知道Flutter是怎么表示语言环境,如何为语言环境分类。
在Flutter中,我们可以通过Locale来表示语言环境。
// zh-CN表示中文
const Locale local = Locale('zh', 'CN');
我们都知道zh-CN代表中文,那具体表示什么含义呢。其实Locale的表示是有专门标准的,Locale的底层是使用的是Unicode BCP47地区标识符标准(http://www.unicode.org/reports/tr35/ ),同时所有语言环境标签都必须经过IANA的认证,IANA维护了一个有效的语言文字标记注册表(https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry ) 。
而zh-CN就是符合上述标准且经过IANA认证的语言环境标签。
Language Tags(语言文字标记)格式规则如下:
language //语言文字种类,必须出现1次
["-" script] ;书写格式,出现0或1次
["-" region] ;国家地区,出现0或1次
*("-" variant) ;方言,出现0或多次
*("-" extension) ;扩展,出现0或多次
["-" privateuse] ;私人用途,出现0或1次
所以, zh-CN其实表达的含义是language-region(语言-区域)的意思。
所以,语言环境是通过这样的组合规则来区分的,一般通过language、script、region组合区分。比如:
language(主要语言文字种类):
zh Chinese 中国字或中国话
cmn Mandarin Chinese 普通话或國語发音
yue Yue Chinese 粤语
script(书写格式):
Hans simplified Chinese 规范汉字
Hant traditional Chinese 國字
region(国家地区):
CN CHINA 中国
HK HONG KONG 香港
Locale的构造方法就是通过指定languageCode、countryCode、scriptCode来初始化成不同的语言环境。比如:
// zh-CN中文
const Locale local = Locale('zh', 'CN');
// zh-Hans-CN以规范汉字书写的中国大陆用词
const Locale local = Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN');
// zh-Hans-HK以简体中文书写的香港地区用词
const Locale local = Locale.fromSubtags(
languageCode: 'zh', scriptCode: 'Hans', countryCode: 'HK');