在Flex中默认只支持en_US , ja_JP这两种本地化,因此如果想在Flex中支持中文或者其他语言时,需要额外的操作:
1、首先添加新的本地化支持,比如:zh_CN,使用以下方法:
在命令行下进入{FlexBuilder的安装目录}/sdks/3.0.0/bin目录下,运行命令:copylocale en_US zh_CN
该命令的格式为(copylocale original_locale new_locale)
2、在Flex工程中添加与src同级的目录用于放置本地化文件,比如:
message.properties中的内容如下(中文):
注意:locale文件夹一定要与src目录同级。
3、然后在工程的Flex Compiler中添加如下的编译项:
4、使用本地化文件,Flex中提供了两种方法使用本地化文件:
第一种:使用@Resource直接使用,使用样例如下:
<mx:Label text="@Resource(key='name', bundle='message')"/>
其中 key 表示的是要取资源的 key , bundle 表示的是本地化文件,去掉 .properties 之后的名称
第二种:使用 Resource Manager 获取,使用 ResourceManager 时,首先需要在 AS 或 FLex 中指定资源文件的元数据,比如上图中的 message.properties, 需要添加如下的信息:
<mx:Metadata>
[ResourceBundle("message")]
</mx:Metadata>
在MXML中可以通过ResourceManager来使用,方式如下:
<shape:ToolBarButton label="{resourceManager.getString('message' , 'refresh')}"
icon="{resourceManager.getClass('message' ,'refreshIcon')}" />
注意:如果容器中没有resourceManager这个变量,可以使用ResourceManager.getInstance()代替resourceManager,因为ResourceManager是单态的。
5、接下来就是如何在运行时改变语言,实现方式如下:
其中LocaleUtil的相关代码如下:
这样就修改了运行时的语言。效果如下:
在点击"英语"后,将切换为下面的效果。
在点击"Chinese"后,将回复到中文的界面。
##########
下面的表格中列出了所有可用于各种系统设置的语言代码。
语言代码
af 南非荷兰语 | sq 阿尔巴尼亚语 |
ar-sa 阿拉伯语(沙特阿拉伯) | ar-iq 阿拉伯语(伊拉克) |
ar-eg 阿拉伯语(埃及) | ar-ly 阿拉伯语(利比亚) |
ar-dz 阿拉伯语(阿尔及利亚) | ar-ma 阿拉伯语(摩洛哥) |
ar-tn 阿拉伯语(突尼斯) | ar-om 阿拉伯语(阿曼) |
ar-ye 阿拉伯语(也门) | ar-sy 阿拉伯语(叙利亚) |
ar-jo 阿拉伯语(约旦) | ar-lb 阿拉伯语(黎巴嫩) |
ar-kw 阿拉伯语(科威特) | ar-ae 阿拉伯语(阿拉伯联合酋长国) |
ar-bh 阿拉伯语(巴林) | ar-qa 阿拉伯语(卡塔尔) |
eu 巴斯克语 | bg 保加利亚语 |
be 贝劳语 | ca 加泰罗尼亚语 |
zh-tw 中文(中国台湾) | zh-cn 中文(中华人民共和国) |
zh-hk 中文(中国香港特别行政区) | zh-sg 中文(新加坡) |
hr 克罗地亚语 | cs 捷克语 |
da 丹麦语 | nl 荷兰语(标准) |
nl-be 荷兰语(比利时) | en 英语 |
en-us 英语(美国) | en-gb 英语(英国) |
en-au 英语(澳大利亚) | en-ca 英语(加拿大) |
en-nz 英语(新西兰) | en-ie 英语(爱尔兰) |
en-za 英语(南非) | en-jm 英语(牙买加) |
en 英语(加勒比) | en-bz 英语(伯利兹) |
en-tt 英语(特立尼达) | et 爱沙尼亚语 |
fo 法罗语 | fa 波斯语 |
fi 芬兰语 | fr 法语(标准) |
fr-be 法语(比利时) | fr-ca 法语(加拿大) |
fr-ch 法语(瑞士) | fr-lu 法语(卢森堡) |
gd 盖尔语(苏格兰) | gd-ie 盖尔语(爱尔兰) |
de 德语(标准) | de-ch 德语(瑞士) |
de-at 德语(奥地利) | de-lu 德语(卢森堡) |
de-li 德语(列支敦士登) | el 希腊语 |
he 希伯来语 | hi 北印度语 |
hu 匈牙利语 | is 冰岛语 |
in 印度尼西亚语 | it 意大利语(标准) |
it-ch 意大利语(瑞士) | ja 日语 |
ko 朝鲜语 | ko 朝鲜语(韩国) |
lv 拉脱维亚语 | lt 立陶宛语 |
mk FYRO 马其顿语 | ms 马来西亚语 |
mt 马耳他语 | no 挪威语(博克马尔) |
no 挪威语(尼诺斯克) | pl 波兰语 |
pt-br 葡萄牙语(巴西) | pt 葡萄牙语(葡萄牙) |
rm 拉丁语系 | ro 罗马尼亚语 |
ro-mo 罗马尼亚语(摩尔达维亚) | ru 俄语 |
ru-mo 俄语(摩尔达维亚) | sz 萨摩斯语(拉普兰) |
sr 塞尔维亚语(西里尔) | sr 塞尔维亚语(拉丁) |
sk 斯洛伐克语 | sl 斯洛文尼亚语 |
sb 索布语 | es 西班牙语(西班牙传统) |
es-mx 西班牙语(墨西哥) | es 西班牙语(西班牙现代) |
es-gt 西班牙语(危地马拉) | es-cr 西班牙语(哥斯达黎加) |
es-pa 西班牙语(巴拿马) | es-do 西班牙语(多米尼加共和国) |
es-ve 西班牙语(委内瑞拉) | es-co 西班牙语(哥伦比亚) |
es-pe 西班牙语(秘鲁) | es-ar 西班牙语(阿根廷) |
es-ec 西班牙语(厄瓜多尔) | es-cl 西班牙语(智利) |
es-uy 西班牙语(乌拉圭) | es-py 西班牙语(巴拉圭) |
es-bo 西班牙语(玻利维亚) | es-sv 西班牙语(萨尔瓦多) |
es-hn 西班牙语(洪都拉斯) | es-ni 西班牙语(尼加拉瓜) |
es-pr 西班牙语(波多黎各) | sx 苏图语 |
sv 瑞典语 | sv-fi 瑞典语(芬兰) |
th 泰语 | ts 汤加语 |
tn 瓦纳语 | tr 土耳其语 |
uk 乌克兰语 | ur 乌尔都语 |
ve 文达语 | vi 越南语 |
xh 科萨语 | ji 依地语 |
zu 祖鲁语 |
如果遇到locale folder找不到的问题执行copylocale,
如添加法语支持(mac系统):
在终端执行:
/Applications/Adobe\ Flash\ Builder\ 4/sdks/4.0.0/bin/copylocale en_US fr