在Flex中开发多语言应用程序的更好方法

时间:2012-11-15 21:55:01

标签: flex localization internationalization multilingual

我打算在Flex中创建一个多语言应用程序。我的方法有以下几点: 要在应用程序中包含所有短语的XML ...

<mx:Script>
<![CDATA[
public var selectedLanguage : String = "spanish";
public var language : xml =
    <xml>
      <message id="<<hashcode of the string in english>>" english="hello world" spanish="hola mundo" french="bonjour tout le monde"/>
      <message id="<<hashcode of the string in english>>" english="good bye every body" spanish="adios a todos" french="tout le monde au revoir"/>
    </xml>;

//Then a function to make the translation:
public function translate(msg:String):String{
    //Maybe not a hashCodeFunction but some function to return an unique code for every string
    var hashcode : int = hashCodeFunction(msg);
    var translation : String = language.message.(@id==hashcode)[selectedLanguage];
    if(translation==null) return msg;
    return translation;
}
]]>
</mx:Script>

<mx:Button label="translate('hello world')"/>

嗯,xml可以用不同的方式构建,但我想要的是创建所有标签,如“translate('some text')”因为这样我认为在程序员时间更好,并且在结束时开发过程只需创建一个“预处理器”,它将在源代码中查找所有字符串,如“translate('some text')”并提取“some text”然后计算哈希代码并将其附加到xml,以及xml时准备就绪所有的应用程序将是多语言的。

我想知道某人是否有其他方法可以分享。

1 个答案:

答案 0 :(得分:3)

Adob​​e实施Resource Bundles用于文本和图像的本地化和国际化。

可以指定编译器选项以包含区域设置:

-locale=en_US,ja_JP,fr_FR

然后,可以检索特定于语言环境的属性,例如:

<s:Label text="{resourceManager.getString('bundleName', 'key')}" />

参考文献: