我打算在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时准备就绪所有的应用程序将是多语言的。
我想知道某人是否有其他方法可以分享。
答案 0 :(得分:3)
Adobe实施Resource Bundles用于文本和图像的本地化和国际化。
可以指定编译器选项以包含区域设置:
-locale=en_US,ja_JP,fr_FR
然后,可以检索特定于语言环境的属性,例如:
<s:Label text="{resourceManager.getString('bundleName', 'key')}" />
参考文献: