在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、接下來就是如何在運行時改變語言,實現方式如下:
- private function changeLanguage():void{
- LocaleUtil.getInstance().changeLocale();
- }
其中LocaleUtil的相關代碼如下:
- public function changeLocale():void{
- _currentLanguage = _currentLanguage == "zh_CN" ? "en_US" : "zh_CN";
- ResourceManager.getInstance().localeChain = [_currentLanguage];
- }
這樣就修改了運行時的語言。效果如下:
在點擊"英語"後,將切換爲下面的效果。
在點擊"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