Flex 4.6 中的阿拉伯语短语被翻转

Arabic phrases in Flex 4.6 are flipped

我有一个 flex 应用程序(4.6 版)需要支持阿拉伯语本地化。 该应用程序已经可以正确处理 UTF-8 字符,因为它已经提供法语版本。 但由于某些原因,阿拉伯文文本未正确显示并被翻转,即标签显示 "ghi def abc" 而不是 "abc def ghi"。

按钮的文本是从 Java 服务器填充的对象中获取的,该服务器读取以 UTF-8 编码的文件。在 Eclipse 中,我检查了该对象的内容,并且正确显示了单词("Expressions" 来自 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 和方向更改为 "rtl"(在 mx:button 声明和 button1_clicked 函数中)但它没有改变任何东西......

我也尝试在字符串的开头和结尾添加特殊字符,但没有成功:'\u202A'、'\u202B'、'\u202C'、'\u202D'、'\u202E' , '\u202F'.

我真的很困惑...

根据有关 text direction 的 Flex 文档,文本方向仅在 Spark 组件集上实现:

Support for setting the direction on text controls is built into text controls in the Spark component set because those text controls are based on FTE (Flash Text Engine). Text-based controls that are based on the TextField control do not support mirroring or bidirectional text.

为了使 MX 控件接受文本方向,您也应该通过调整编译器(ref):

为它们使用 Flash Text Engine

To ensure that MX controls use FTE in Flash Builder, select the "Use Flash Text Engine in MX Components" option. On the command line, you can apply the MXFTEText.css theme file:

mxmlc -theme+=themes/MXFTEText.css MyApp.mxml

Selecting this option causes most internal dependencies on UITextField to be replaced with UIFTETextField, which supports FTE. The MX TextInput, TextArea, and RichText text classes do not include this support. You should replace these controls with the equivalent Spark text-based controls.