我有一个需要支持阿拉伯语本地化的flex应用程序(版本4.6)。 该应用程序已经正确处理UTF-8字符,因为它已经是法语版本。 但由于某些原因,阿拉伯语文本没有正确显示并被翻转,即标签显示“ghi def abc”而不是“abc def ghi”。
按钮的文本是从Java服务器填充的对象中获取的,该服务器读取以UTF-8编码的文件。在eclipse中,我检查了该对象的内容,并正确显示了这些单词(来自eclipse的“表达式”视图)。
<mx:Button id="button1"
label="{Messages.currentLanguage['button1']}"
click="button1_clicked ()"/>
在button1_clicked()函数中我添加了一小段代码来检查它是否可以来自Messages对象:
private function importFile_clicked ():void
{
var temp:String = "قائمة مستخدمي المشروع";
//var temp:String = "toto and titi"; // toto and titi is correctly displayed
importFile.label = temp;
}
但它没有用......按钮仍然显示:
المشروعمستخدميقائمة
而不是:
قائمةمستخدميالمشروع
请注意,我还尝试将layoutDirection和direction更改为“rtl”(在mx:button声明和button1_clicked函数中)但它没有改变任何内容......
我还尝试在字符串的开头和结尾添加特殊字符,但没有成功:'\ u202A','\ u202B','\ u202C','\ u202D','\ u202E',' \ u202F”。
我真的很困惑......
答案 0 :(得分:0)
根据有关text direction的Flex文档,文本方向仅在Spark
组件集上实现:
在Spark组件集中的文本控件中内置了对文本控件设置方向的支持,因为这些文本控件基于FTE(Flash文本引擎)。基于TextField控件的基于文本的控件不支持镜像或双向文本。
为了使MX
控件接受文本方向,您应该通过调整编译器(ref)来使用Flash Text Engine
:
要确保MX控件在Flash Builder中使用FTE,请选择&#34;在MX Components中使用Flash文本引擎&#34;选项。在命令行上,您可以应用MXFTEText.css主题文件:
mxmlc -theme+=themes/MXFTEText.css MyApp.mxml
选择此选项会导致
UITextField
上的大多数内部依赖项替换为支持FTE的UIFTETextField
。 MX TextInput,TextArea和RichText文本类不包含此支持。您应该使用等效的基于Spark文本的控件替换这些控件。