1

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

我想知道是否有人有另一种分享方式。

4

1 回答 1

3

Adobe 为文本和图像的本地化和国际化实施资源包

可以指定编译器选项以包括语言环境:

-locale=en_US,ja_JP,fr_FR

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

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

参考:

于 2012-11-16T03:13:15.313 回答