在运行时本地化组件标签

时间:2013-01-10 15:35:21

标签: actionscript-3 flex localization tabnavigator

我在导航器中有几个不同的选项卡,如下所示:(已删除客户端特定域)

<s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009" 
                    xmlns:s="library://ns.adobe.com/flex/spark" 
                    xmlns:mx="library://ns.adobe.com/flex/mx"
                    xmlns:container="com.*****.shop.admin.container.*"
                    width="100%" height="100%"
                    implements="com.*****.common.container.IScreen"
                    xmlns:services="com.****.shop.admin.services.*"
                    label="Service Types">

我有不同语言环境的资源包,en_US如下所示:

ServicesScreen.label=Service Types

当我尝试这样做时,它不起作用:

...    
... 
label="{resourceManager.getString('resources','ServicesScreen.label')}"

而不是获取我的资源包条目,我在GUI中看到了一些奇怪的东西,如:

Shop0.ShopSkin9._ShopSkin_Group1.contentScroller.ScrollerSkin13.contentGroup.vsMain.AdminView154.SkinnableContainerSkin159.contentGroup.subNavItems.opCodeScreen

我的资源包在其他情况下工作,例如表单输入字段旁边的标签等等。然而,代码编译并没有实际抛出任何错误(编译或运行时)。我尝试将值赋给变量并在标签字段中使用该变量,但这会导致编译错误。

我尝试在创建组件时调用setter方法,但这也没有解决问题。

如何本地化我的标签标签,是否可以在运行时动态执行此操作?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

我想我会自己回答这个,虽然归功于Sunil D.我不知道为什么它在我测试时没有提前工作,我肯定第一次错过了什么,但是这里去。首先我补充说:

creationComplete="init(event)">

然后在那个方法体中我做了:

    protected function init(event:FlexEvent):void
    {
        this.label = resourceManager.getString('resources','opCodeScreen.title');
    }

它就像一个魅力。说实话,我很确定我今天早上做了同样的测试,但我猜不是。 Sunil如果你想让你的评论成为答案,我会继续并接受它。

编辑:在运行时更改文本,添加调用上述方法的currentStateChange

干杯!