我的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?
感谢。
答案 0 :(得分:1)
编译时,需要包含以逗号分隔的区域设置列表:
-locale=en_US,es_ES
这应该允许@Resource用于本地化。
帮助文档中的更多详细信息:
摘录:
能够在不使用资源的情况下在运行时更改语言环境 模块,您将所有可用的语言环境编译到应用程序中 通过将它们包含在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>