flex使用资源文件
在Flex中使用资源包
?程序代码
C:/Documents and Settings/bdeitte/My Documents/Flex Builder 2/locale
我们还需要为拥有资源包的每一种语言分别创建一个子目录。这些子目录的名字必须是我们想要使用的本地名字。 我们将使用对英文字符串使用en_US并且对西班牙字符串使用sp。所以现在我们的子目录有:
?程序代码
C:/Documents and Settings/bdeitte/My Documents/Flex Builder 2/locale/en_US C:/Documents and Settings/bdeitte/My Documents/Flex Builder 2/locale/sp
?程序代码
C:/Documents and Settings/bdeitte/My Documents/Flex Builder 2/locale/{locale}
然后主程序文件的名改为 HelloWorld.mxml ,点击结束。 编写HelloWorld.mxml 现在在Flex Builder中已经有了一个HelloWorld.mxml。在代码模式下,将HelloWorld.mxml编写成下面这样:
?程序代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml"> ????<mx:Label text="@Resource(key='hello',bundle='HelloWorldBundle')"/> </mx:Application>
?程序代码
Unable to resolve a class for ResourceBundle: HelloWorldBundle.
这里提到了一个类,因为Flex编译器将属性文件看作了一个类,但是它无法找到一个属性文件。 添加属性文件 在早先创建的en_US文件夹中创建HelloWorldBundle.properties。向文件中添加如下内容:????
?程序代码
hello=Hello World
在sp文件夹下创建HelloWorldBundle.properties,并向其中添加如下内容:????
?程序代码
hello=Hola Mundo
属性文件的文件名以及等号的左边和我们在@Resource中定义的包名和key是相对应的。如果需要我们可以像下面这样添加更多的key。 ??
程序代码
hello=Hola Mundo
????one=uno ????bye=Adios 编译并运行 现在我们可以返回到Flex Builder中并运行 HelloWorld了。当运行程序的时候,你可以看到屏幕上最令人兴奋的东西,"Hello World"。 在西班牙语环境下打开该工程,右键点击工程名然后选择属性。在附加的编译器参数里,将locale从”en_US”改为”sp”。 “sp”就是我们放置第二个HelloWorldBundle.properties文件的文件夹名。然后运行该工程,你将看到"Hola Mundo"。 如果你创建这些程序是为了以后使用的话,你需要在创建西班牙语版本的程序之前将英语版程序的输出文件拷贝出来,你也可以在创建最终的SWF文件的时候使用命令行编译器创建这些文件。你或许还需要创建一个HTML或者Flash页面让用户选择使用哪种语言。 进一步的探索 这里我们只是使用了MXML中的@Resource而并没有使用ActionScript中的ResourceBundle元数据。这个是使用资源包的一个重要部分。你可以查看Flex文档中的 "Flex 2 Developer's Guide" 的 "Localizing Flex Applications" 章节来学习这一部分。 在这篇文章中我们并没有讨论资源包的一些更高级的特性: ?如果你创建了资源包SWC,可以在SWC中使用资源包。 ?通过使用自定义的资源包可以将全部的类和像图像这样的媒体文件国际化。 ?所有的框架都使用了属性文件,而且通过使用框架的源代码你可以将框架本地化。 更多关于这些特性的信息也可以在文档中 "Localizing Flex Applications" 章节找到。 ResourceBundle API文档可以用来更深入地学习资源包,不过不要在意页面上的摘要。说明中的重要篇章通常并不正确。 未来的趋势 使用资源包时会有一些问题,这些问题将会在下一次对Flex更新的时候修正。最明显的一个问题是,Flex Builder会在更新一个属性文件的时候显示错误信息。如果你看到了一个??"Unable to resolve a class for ResourceBundle" 错误并且类的名字以 "_properties" 结尾,你就能知道你是遇到了这种问题。你可以选择清洁工程来除掉这个错误。 Flex Builder在创建本地程序的时候可能会移除需要拷贝的目录,虽然我们以前并没有决定这样做。这个问题可以通过一个可以让用户在多个地区之间选择的对话框来解决。 Flex可以允许资源在运行时被动态检索,虽然我们并没有决定这样。目前,Flex只支持将资源包编译到SWF中。我们计划允许向属性文件中添加媒体和类。这意味着复合资源包将不再需要自定义资源包了。 在更远的将来,Flex可能会使用不同的翻译格式来代替属性文件,比如XML本地化交换文件格式(XML Localization Interchange File Format)。 如果你想要资源包将来有更多特性,你可以通过这个地址bdeitte@adobe.com向我发电子邮件。我也将会在www.deitte.com上发布关于资源包的更新以及以后对资源包的研究。 ------------------------------------------------------------------------------------------ 关于Brian Deitte Brian Deitte 是Flex小组的高级软件工程师。四年前他在Allaire从事Jrun的工作,后来转向ColdFusion。现在他专注于所有和Flash有关的东西。他的个人网站是 www.deitte.com。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |