Flex 国际化(中英语言适配)
原文地址:http://www.cnblogs.com/meteoric_cry/archive/2011/01/13/1934404.html(由于此贴时间久远,已做微调)
1、新建Flex Project
2、设置Project中的源路径,例如:locale/{locale}

-locale en_US -locale zh_CN -source-path=locale/{locale} (复制此项内容粘贴即可,不需额外设置)
3、新建文件夹:locale,然后在其目录下新建两个语言包文件夹:
zh_CN
en_US
两个文件夹内添加一个名为info.properties(文件后缀名必须是properties,文件名随意)

info.properties里的内容为:
中文为:
info=当前语言: {0} 当前的IDE是{1} 当前使用的版本是:{2}
英文为:
info=Current Langunage: {0} Current use IDE {1} Version now is {2}

5、打开Flex Project的mxml主文件
先绑定语言包
《FB 4.6》
<fx:Metadata>
[ResourceBundle("info")]
</fx:Metadata>
info为语言包文件的文件名(info.properties)
在界面添加两个按钮,点击时更改语言包设置,然后进行测试:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<?xml version="1.0" encoding="utf-8"?> protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void } import mx.controls.Alert; function show():void { var arr:Array = null; if (ResourceManager.getInstance().localeChain.toString() == "zh_CN") { infoStr = StringUtil.substitute(infoStr, arr); Alert.show(infoStr, "这里是标题"); function show_CN(evt:MouseEvent):void { show(); function show_US(evt:MouseEvent):void { show(); ]]> <fx:Metadata> <mx:Button label="显示中文" x="339" y="230" click="show_CN(event);"></mx:Button> <mx:Button label="显示英文" x="339" y="280" click="show_US(event);"></mx:Button> |
|
1
|
|
|
1
|
|
然后按F11,调试运行。
最终的效果图为:



在获取文本信息的时候,使用了flex中的字符串工具“StringUtil”包中的“substitute”方法:

《保留原创截图 上面版本号已被修改》
源码就是一个使用正则替换的过程:

延伸:

路径:D:\Program Files (x86)\Adobe Flash Builder 4.6\Adobe Flash Builder 4.6\sdks\4.6.0 - 18.0Air\frameworks\locale
这是Sdk 能适配的语言包,数了一下16种语言,一般的国际化需求应该满足了,如有更多需求只能考虑自行扩展了,难度、复杂性未做评估,但可行性应该是良好的。

实现:
function show_KO(evt:MouseEvent):void {
ResourceManager.getInstance().localeChain = ["ko_KR"];
show();
}
function show():void {
var infoStr:String = ResourceManager.getInstance().getString("info", "info");
var test:String = ResourceManager.getInstance().getString("info", "test");
var str:String = ResourceManager.getInstance().getString("info","str");
var arrayGet:Array = ResourceManager.getInstance().getStringArray("info","array");
var arr:Array = null;
if (ResourceManager.getInstance().localeChain.toString() == "zh_CN") {
arr = ['中文', 'Flash Builder', 'V2.0'];
} else if(ResourceManager.getInstance().localeChain.toString() == "en_US") {
arr = ["English", 'Flash Builder', 'V3.0'];
}
else if(ResourceManager.getInstance().localeChain.toString() == "ko_KR") {
arr = ["한국어", '안녕하세요', 'V1.5'];
}
infoStr = StringUtil.substitute(infoStr, arr);
trace("获取内容",infoStr,"\ntest:"+test,"\nstr::"+str,"arrayGet::",arrayGet[1]);
Alert.show(infoStr, "这里是标题");
}
da_DK 丹麦语
de_DE 德语
en_US 英语
es_ES 西班牙语
fi_FI 芬兰文
fr_FR 法文
it_IT 意大利
ja_JP 日语
ko_KR 韩语
nb_NO 挪威文
nl_NL 荷兰文
pt_BR 葡萄牙语
ru_RU 俄罗斯
sv_SE 瑞典文
zh_CN 简体中文
zh_TW 繁体中文
系统语言 检测ApI
flash.system.Capabilities.language():String
- [只读] 指定运行内容的系统的语言代码。语言指定为 ISO 639-1 中的小写双字母语言代码。对于中文,另外使用 ISO 3166 中的大写双字母国家/地区代码,以区分简体中文和繁体中文。语言代码基于语言的英文名称:例如,
hu指定匈牙利语。
在英文系统上,此属性仅返回语言代码 (en),而不返回国家/地区代码。在 Microsoft Windows 系统上,此属性返回用户界面 (UI) 语言,该语言指的是所有菜单、对话框、错误信息和帮助文件所使用的语言。下表列出了可能的值:
| 语言 | 值 |
|---|---|
| 捷克语 | cs |
| 丹麦语 | da |
| 荷兰语 | nl |
| 英语 | en |
| 芬兰语 | fi |
| 法语 | fr |
| 德语 | de |
| 匈牙利语 | hu |
| 意大利语 | it |
| 日语 | ja |
| 韩语 | ko |
| 挪威语 | no |
| 其他/未知 | xu |
| 波兰语 | pl |
| 葡萄牙语 | pt |
| 俄语 | ru |
| 简体中文 | zh-CN |
| 西班牙语 | es |
| 瑞典语 | sv |
| 繁体中文 | zh-TW |
| 土耳其语 | tr |
注意:Capabilities.language 属性的值限制为此列表上可能的值。由于此限制,Adobe AIR 应用程序应使用 Capabilities.languages 数组中的第一个元素决定系统的主用户界面语言。
服务器字符串为 L。
- 另请参阅:
- languages
- 语言版本:
- 3.0
- Player 版本:
- Flash 9, AIR 1.0, Lite 4
Flex 国际化(中英语言适配)的更多相关文章
- 【资源分享】Half-Life(半条命)中英版
*----------------------------------------------[下载区]----------------------------------------------* ...
- QT国际化(中英转换)
转载:https://blog.csdn.net/u012528526/article/details/54707233 QT国际化(中英转换) 我们都知道在安卓中,想做国际化很简单,只需要建立对应的 ...
- Win10 改为用 Ctrl+Shift 切换中英输入语言而不是 Win+空格
是切换中英输入语言,而不是切换输入法,如图: 步骤: 设置 > 设备 > 输入 > 高级键盘设置 > 语言栏选项 > 高级键盘设置 > 更改按键顺序 > 切换 ...
- iOS开发——iOS国际化 APP内语言切换
最近一个一直在迭代的老项目收到一份新的开发需求,项目需要做国际化适配,简体中文+英文.由于项目中采用了storyboard和纯代码两种布局方式,所以国际化也要同时实现.上网查了些资料,实现了更改系统语 ...
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...
- Maven下Flex国际化配置
之前写了flashbulid.initellij下的flex国际化配置,它们都是在本地打包发布的,那么我们的工程用maven管理了,需要自动发布.这时候如何修改flex的pom文件,来让它build的 ...
- android国际化(多语言)
2013-03-18 23:45 13390人阅读 评论(0) 收藏 举报 1. 很大程度上,为什么 ...
- [转]从普通DLL中导出C++类 – dllexport和dllimport的使用方法(中英对照、附注解)
这几天写几个小程序练手,在准备将一个类导出时,发现还真不知道如果不用MFC的扩展DLL,是怎么导出的.但我知道dllexport可以导出函数和变量,而且MFC扩展DLL就算是使用了MFC的功能,但 ...
- Flex 国际化(flex Localize)
先说编译到主程序中去的方法: 1.创建资源文件夹 譬如可以在src文件夹下创建Locale文件夹,然后在此文件夹再次创建每个地区的资源文件夹,譬如de_DE,zh_CN. 然后分别创建后缀名为.pro ...
随机推荐
- 在网络通讯中应用Protobuf
在网络通讯中应用Protobuf Protobuf的设计非常适用于在网络通讯中的数据载体,它序列化出来的数据量少再加上以K-V的方式来存储数据,对消息的版本兼容性非常强:还有一个比较大的优点就是有着很 ...
- JQUERY UI DOWNLOAD
JQUERY UI DOWNLOAD jDownload是jQuery的一个下载插件,用户可以在下载文件之前知道文件的详细信息,在提高用户体验度方面起到了很大的作用. 鉴于官网的Demo是通过PHP文 ...
- XHtml(Xml+Html)语法知识(DTD、XSD)
那点你不知道的XHtml(Xml+Html)语法知识(DTD.XSD) 什么是XHtml: 摘录网上的一句话,XHTML就是一个扮演着类似HTML的角色的XML. XHtml可当模板引擎应用: CYQ ...
- 里氏替换原则LSP(继承规范)
继承的优点: 1.代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性. 2.提高代码的重用性. 3.子类可以形似父类,但又异于父类. 4.提高代码的可扩展性,实现父类的方法就可以“为所欲为” ...
- Nhibernate1
Nhibernate随手记(1) 学习Nhibernate的萌芽 今早有群里有人问Nhibernate的问题,没学过,刚好来了兴趣,无意很快在园子里下载到了一本Nhibernate3.0的电子书,内容 ...
- jQuery.fn.attr与jQuery.fn.prop
jQuery.fn.attr与jQuery.fn.prop jQuery.fn.attr.jQuery.fn.prop的区别 假设页面有下面这么个标签,$('#ddd').attr('nick').$ ...
- Microsoft2013校园招聘笔试题
Microsoft2013校园招聘笔试题 继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently ...
- CKEditor 自主控制图片上传
在ASP.NET中使用CKEditor编辑器,如果想控制图片上传,即把上传的图片路径名存到数据中,可以自定义一个上传功能 首先自定义CKEditor的配置文件 在config.js中添加以下代码,红色 ...
- JS,CSS是前端,JAVA PHP ASP是后端,数据库是后端的处理对象,非代表前后底
大海-mysql-oracle(529513481) 19:02:18 象我这边,前台都是php,而php做数据分析是不太理想的,做中间件没人力,难办 横瓜(601069289) 19:20:15 ...
- CentOS 安装 Mogodb(在线 && 离线)
平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html 先说推荐安装:在线安装,跟着官方走可以避免一些问题 新学Mon ...