0

在 Flash Builder 4.7(使用 AIR 3.5)中,我试图将语言环境 en_US 和 de_DE 添加到 Flex Mobile 应用程序,该应用程序最初只是 ru_RU。

即最初我只有-locale ru_RU在项目属性 - > Flex 编译器和源代码中硬编码的俄语文本(一切正常)。

但是在学习了Adob​​e docs Localization in Flex – Part 1: Compiling resources into an applicationAdd new locales之后,我将 Flex 编译器(标志)更改为-locale ru_RU en_US de_DE

在此处输入图像描述

并已添加src\locale\{locale}到源路径:

在此处输入图像描述

最后我创建了子目录和文件

src\locale\ru_RU\resources.properties
src\locale\en_US\resources.properties
src\locale\de_DE\resources.properties

这里 en_US\resources.properties 内容:

menu.play=Play via
menu.weekly=Weekly rating
menu.daily=Daily misere
menu.settings=Settings

AIR 3.5 SDK 目录本身已经包含 3 个子目录:

C:\Program Files\Adobe\Adobe Flash Builder 4.7 (64 Bit)\sdks\4.6.0 (AIR 3.5)\

frameworks\projects\framework\bundles\ru_RU
frameworks\projects\framework\bundles\en_US
frameworks\projects\framework\bundles\de_DE

所以我没有使用该copylocale实用程序(对吗?)

在我的源代码中,我更改了第一个视图:

<fx:Metadata>
    [ResourceBundle("resources")]
</fx:Metadata> 
......

[Bindable]
private var _ac:ArrayCollection = new ArrayCollection([
    { icon: OK_ICON, view: OK, label: resourceManager.getString('resources','menu.play'), msg: 'Odnoklassniki.ru' },
    { icon: MR_ICON, view: MR, label: resourceManager.getString('resources','menu.play'), msg: 'Mail.ru' },
    { icon: VK_ICON, view: VK, label: resourceManager.getString('resources','menu.play'), msg: 'Vk.com' },
    { icon: FB_ICON, view: FB, label: resourceManager.getString('resources','menu.play'), msg: 'Facebook.com' },
    { icon: GG_ICON, view: GG, label: resourceManager.getString('resources','menu.play'), msg: 'Google+' }
]);

然而,新代码在运行时爆炸,说resourceManager是空的。

请问我错过了什么?

我应该resourceManager以某种方式初始化吗?

4

2 回答 2

1

这只是一个猜测,但似乎是有道理的:

您正在尝试ResourceManager在初始化ArrayCollection. 这种变量初始化发生在创建类时,很可能没有足够的时间让 Flex 完成它对您的视图所做的所有事情(比如初始化它的resourceManager属性)。

如果您ArrayCollection在视图调度“creationComplete”事件后填充您的,那么您应该保证resourceManager不再为空。也许您可以尝试在“creationComplete”之前调度的其他一些 Flex 生命周期事件,例如“initialize”,以便更快地完成这项工作......

于 2013-06-01T01:02:59.790 回答
0

您在语言环境代码之间的编译器参数中缺少逗号。

如果你想像我一样将你的本地人放在你的 src 文件夹下,你可以添加以下编译器参数。

-locale=en_US,fr_FR,zh_CN,pt_BR -allow-source-path-overlap=true -source-path=locale/{locale}
于 2013-09-12T02:41:20.083 回答