Flex国际化(I18N )
最简单的方法是本地化编译,即编译不同的语言版本
,然后使用
Application Server
来判定客户使用的是哪种语言,并自动指向对应的
swf
文件。
具体做法如下:
在项目上点击右键,选择
Properties
。
然后选择
Flex Compiler
,在
Additional Compiler arguments
下面已经配置好语言包了,默认为
-locale en_US
。
这时我们可以用一个
locale
目录来简单定制我们额外设置(当然不包括
Flex
内
部控件的语言)
的
语言设置。
比如改为:
-locale=en_US
-source-path+=g:\flexproj\locale\{locale}
。这样在
g
盘
的
flexproj
目录下建立一个
locale
目录。
然后目录下放置包含我们要扩展的语言文件的文件夹就可了。比
如
:
g:\flexproj\locale\en_US
。
注意:
locale
下面的目录名应该和
-locale=
设置的名称一致。
那么这样,我们就可以使用额外的语言设置了。
例:
Additional Compiler arguments
配置为
-locale+=en_US
-source-path+=g:\flexproj\testgoufang\locale\{locale}
然后在对应的
locale
目录下添加国际化资源文件
g:\flexproj\testgoufang\locale\en_US\strings.properties
这一部分跟
struts
相似。
里面的内容为键
=
值的形式,如:
Title=
测试项目
User=
用户名
Password=
密码
…………
…………
使用的时候可以通过
[
ResourceBundle
]
元数据标签来绑定
locale
文件,如:
<mx:Metadata>
[ResourceBundle(
"strings"
)]
</mx:Metadata>
即绑定上文提到的
strings.properties
文件,然后我们可以通过
ResoueceManager
来读出其中的内容,比如:
var
Title : String =
resourceManager.getString(
"strings"
,
'Title'
);
或者绑定到控件:
[
Bindable
]
private
var
Title:String;
…………
Title =
resourceManager.getString(
"strings"
,
'Title'
);
…………
<mx:Label
text="
{
Title
}
"/
>
上面对针对国际化而使用
locale
文件的方式做了一个简单的介绍,不过问题还是很多,比如
Flex
控件的国际化,动态国际化用上面的方法都无法做到。也就是说如果我使用
Flex
的控件,
相关文档:
使用资源最简单的方法就是通过选中你的flex工程,然后从右键的菜单中选择properties,选择Flex build path中的Source Path,然后把你.properties文件所在的目录添加进去。现在就可以在MXML中使用资源了,代码比较简单,首先假设你的资源名名字是messages_zh_CN.properties,那么定义好
<fx:Metadata ......
其实这就是个数据显示的问题,经常我们的原始数据并不是最终显示给用户的,而是以另一种方式显示,比如性别假设在后台数据以boolean变量来保存,即true为男,false为女,那么界面就需要处理把true变成string的“男”。对于格式转换一般flex你们使用Formatter类,当然Formatter类是比较抽象的类,然后更具体的如Cu ......
在Flex下设置页面浏览器标题Title工有两种方式:
1(推荐此方法).利用BrowserManager类设置Title:
BrowserManager.getInstance().setTitle("***信息系统");
可以将上面一行代码写在系统的初始化函数中
2.在Apllicaaction标签下设置pageTitle属性:
<mx:Application xmlns:mx="http://www.adobe.com/ ......
需求:
开发flex的过程中遇到一个问题。flex的项目需要在客服端显示一个局域网类的一台服务器的文件目录结构,并且要能够点击访问。
预想:
flex在以前的版本里面没有file类,这个可以用java代码在后台进行处理,生成xml文件。前台的flex到相应目录下面读取数据即可。
困难:
flash被下载到客服端,有严格的安全 ......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="vertical" creationComplete="initApp()">
<mx:states>
<!--新建“index”State-->
<m ......