为什么flex资源标签不支持本地化?

时间:2012-03-27 22:40:12

标签: flex localization

我的flex应用程序中的一些地方,我使用ResourceManager.getInstance()。getString,以及我使用mxml @Resource标记检索从ResourceManager动态加载的资源属性的其他地方。

resourceManager.loadResourceModule(resourceModuleURL);

但只有ResourceManager.getInstance()。getString中的字符串显示正确的基于区域设置的值,而@Resource标记仅返回en_US资源中的值。我想这是因为en_US是我编译的(-locale = en_US)。

所以我想知道我是否使用动态加载的资源,是否必须放弃@Resource标记并使用ResourceManager.getInstance()。getString?

感谢。

1 个答案:

答案 0 :(得分:1)

编译时,需要包含以逗号分隔的区域设置列表:

-locale=en_US,es_ES

这应该允许@Resource用于本地化。

帮助文档中的更多详细信息:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3a.html#WS2db454920e96a9e51e63e3d11c0bf6119c-7fef

摘录:

  

能够在不使用资源的情况下在运行时更改语言环境   模块,您将所有可用的语言环境编译到应用程序中   通过将它们包含在locale选项中来编译时间。这个   编译器选项采用逗号分隔的语言环境列表。如果你添加一个   第二个语言环境,例如es_ES,将语言环境选项更改为   以下内容:

-locale=en_US,es_ES

修改

要将区域设置分隔为单独的SWF文件,请尝试创建资源模块。这是一段摘录:

  

资源模块是SWF文件,与您的应用程序SWF分开   文件,包含单个区域设置的资源包。您的   应用程序可以在启动时预加载一个或多个资源模块,   在它显示其用户界面之前。它还可以加载资源   模块稍后,例如响应用户选择新的语言环境。   ResourceManager与所有资源包交互相同,   它管理的捆绑包是否最初被编译成   应用程序或从资源模块加载。

它们非常适合用于本地化,因为您可以将每种语言分成不同的swf文件。

  

资源模块可以是更好的本地化方法   编译时资源,因为您外部化了资源模块   可以在运行时加载。这会创建一个较小的应用程序SWF   文件,但随后要求您为每个文件加载单独的SWF文件   您使用的资源模块。结果可能是数量增加了   网络请求和大于的汇总应用程序大小   如果您将语言环境资源编译到应用程序中。但是,如果   你有很多区域设置,然后单独加载它们应该保存   从长远来看资源。

这是一个解释资源模块的链接: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7f3c.html

我的建议是创建您需要用作SWF本地化的资源模块,然后在编译时将它们编译到应用程序中,或者在运行时动态引导每个ResourceModule,这样您就可以访问它。 / p>