原文地址: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"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="windowedapplication1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;

protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub

}

import mx.controls.Alert;
import mx.resources.ResourceBundle;
import mx.resources.ResourceManager;
import mx.utils.StringUtil;

function show():void {
var infoStr:String = ResourceManager.getInstance().getString("info", "info");

var arr:Array = null;

if (ResourceManager.getInstance().localeChain.toString() == "zh_CN") {
arr = ['中文', 'Flash Builder', 'V2.0'];
} else {
arr = ["English", 'Flash Builder', 'V3.0'];
}

infoStr = StringUtil.substitute(infoStr, arr);

Alert.show(infoStr, "这里是标题");
}

function show_CN(evt:MouseEvent):void {
ResourceManager.getInstance().localeChain = ["zh_CN"];

show();
}

function show_US(evt:MouseEvent):void {
ResourceManager.getInstance().localeChain = ["en_US"];

show();
}

]]>
</fx:Script>

<fx:Metadata>
[ResourceBundle("info")]
</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>
</s:WindowedApplication>

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, "这里是标题");
}

 
 
另:很多编辑器可能无法正常显示、编辑韩文(或其它语言),以notepad++ 为例,虽然不能显示,但是粘贴或编辑的内容可以正常在程序中显示^_^。
 
 
支持的语言:
 
【sdk 18.0】

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 国际化(中英语言适配)的更多相关文章

  1. 【资源分享】Half-Life(半条命)中英版

    *----------------------------------------------[下载区]----------------------------------------------* ...

  2. QT国际化(中英转换)

    转载:https://blog.csdn.net/u012528526/article/details/54707233 QT国际化(中英转换) 我们都知道在安卓中,想做国际化很简单,只需要建立对应的 ...

  3. Win10 改为用 Ctrl+Shift 切换中英输入语言而不是 Win+空格

    是切换中英输入语言,而不是切换输入法,如图: 步骤: 设置 > 设备 > 输入 > 高级键盘设置 > 语言栏选项 > 高级键盘设置 > 更改按键顺序 > 切换 ...

  4. iOS开发——iOS国际化 APP内语言切换

    最近一个一直在迭代的老项目收到一份新的开发需求,项目需要做国际化适配,简体中文+英文.由于项目中采用了storyboard和纯代码两种布局方式,所以国际化也要同时实现.上网查了些资料,实现了更改系统语 ...

  5. JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载

    JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和 ...

  6. Maven下Flex国际化配置

    之前写了flashbulid.initellij下的flex国际化配置,它们都是在本地打包发布的,那么我们的工程用maven管理了,需要自动发布.这时候如何修改flex的pom文件,来让它build的 ...

  7. android国际化(多语言)

    2013-03-18 23:45             13390人阅读             评论(0)             收藏              举报 1.  很大程度上,为什么 ...

  8. [转]从普通DLL中导出C++类 – dllexport和dllimport的使用方法(中英对照、附注解)

      这几天写几个小程序练手,在准备将一个类导出时,发现还真不知道如果不用MFC的扩展DLL,是怎么导出的.但我知道dllexport可以导出函数和变量,而且MFC扩展DLL就算是使用了MFC的功能,但 ...

  9. Flex 国际化(flex Localize)

    先说编译到主程序中去的方法: 1.创建资源文件夹 譬如可以在src文件夹下创建Locale文件夹,然后在此文件夹再次创建每个地区的资源文件夹,譬如de_DE,zh_CN. 然后分别创建后缀名为.pro ...

随机推荐

  1. ASP.NET MVC页面UI之多级数据选择UI(行业信息、专业信息、职位信息的选择)

    多级数据选择操作在开发中是常见的操作,比如选择行业信息时,一般有个大类,每个大类下边又包含很多小类,本文简单实现了弹出窗口一级一级选择功能. 本文博客出处:http://www.kwstu.com/A ...

  2. 百万行mysql数据库优化和10G大文件上传方案

    百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...

  3. Visual Studio属性配置中使用宏

    在学习C语言的时候,我们曾经遇到过一个宏的概念.宏的作用机理本质上是宏的展开,C语言中的宏的用法也有很多种(水其实很深...),不过从感觉上来讲,人们大致上会在以下的场景中,利用宏来解决一些窘境:一是 ...

  4. JavaScript中的call 和apply的用途以及区别

    apply 接受两个参数,第一个参数指定了函数体内this 对象的指向,第二个参数为一个带下标的集合,这个集合可以为数组,也可以为类数组,apply 方法把这个集合中的元素作为参数传递给被调用的函数: ...

  5. Swift3.0服务端开发(三) Mustache页面模板与日志记录

    本篇博客主要介绍如果在Perfect工程中引入和使用Mustache页面模板与日志记录系统.Mustache页面模板类似于PHP中的smarty模板引擎或者Java中的JSTL标签.当然Mustach ...

  6. C++ STD inner_product函数

    C++ STD函数   inner_product是c++标准库封装的一个函数. 函数原型: 函数1: inner_product(beg1, end1, beg2, init) 函数2: inner ...

  7. mysql添加mcafee 审计插件

    插件源码地址https://github.com/mcafee/mysql-audit插件安装方法https://github.com/mcafee/mysql-audit/wiki/Installa ...

  8. C语言:SQLITE3的学习

    Sqlite基础学习 一.sqlite的概念 SQLite是一款轻型数据库,是遵守ACID的关系型数据库管理系统,由C语言开发设计.Sqlite的设计目标着眼于嵌入式领域,所以具有占用系统资源低和处理 ...

  9. http状态码200,300,404等是什么意思

    在学习网页设计的时候都应该知道状态码,但我们常见的状态码都是200,404,下面介绍其他的状态值 1开头的http状态码 表示临时响应并需要请求者继续执行操作的状态代码. 100   (继续) 请求者 ...

  10. 在python上获得随机字符

    """今天写一个程序,在想既然可以获得随机数,那我可不可以获得任意字符呢,于是在stackoverflow.com 上找到了方法,几乎都是用导入random,然后再用其它 ...