GWT国际化为阿拉伯语(RTL语言)?

GWT国际化为阿拉伯语(RTL语言)?,gwt,internationalization,arabic,Gwt,Internationalization,Arabic,当我将我的Webapp国际化为RTL语言时,我遇到了一个问题(应该是GWT特性)。基本上,GWT特性将接口镜像到RTL,我不希望发生这种情况 我怎样才能防止GWT自动镜像我的界面,而只保留已翻译的字符串 以下是我的*.gwt.xml代码: <!DOCTYPE ... > <module rename-to='blah'> <inherits name='com.google.gwt.user.User' /> <inherits

当我将我的Webapp国际化为RTL语言时,我遇到了一个问题(应该是GWT特性)。基本上,GWT特性将接口镜像到RTL,我不希望发生这种情况

我怎样才能防止GWT自动镜像我的界面,而只保留已翻译的字符串

以下是我的*.gwt.xml代码:

    <!DOCTYPE ... >
<module rename-to='blah'>
    <inherits name='com.google.gwt.user.User' />
    <inherits name='com.google.gwt.user.theme.clean.Clean'/> 
    <inherits name="com.google.gwt.i18n.I18N"/>
    <inherits name="com.google.gwt.json.JSON" />
    <inherits name="com.google.gwt.user.Debug"/> 

    <extend-property name="locale" values="pt"/>
    <extend-property name="locale" values="es"/>
    <extend-property name="locale" values="ar"/>

    <source path="client"/>
    <source path="shared"/>

    <entry-point 
        class="EntryPoint"/>

    <!-- Remote services   -->

</module>


GWT支持RTL和LTR语言

  • 如果您想拥有LTR(从左到右)主题,请在
    *.gwt.xml
    中使用
    (默认主题)
  • 如果您想使用RTL(从右到左)主题,请在
    *.gwt.xml

在您的情况下,如果您不希望GWT特性将接口镜像到RTL,那么请使用

,不幸的是,这是许多GWT小部件的特性。这些小部件在内部调用
LocaleInfo.getCurrentLocale().isRTL()
,即使您以某种方式更改此调用的返回值,它也会禁用文本的rtl。所以这不是一个选择


我想你有两个选择。首先,不要使用使用RTL检查的小部件;其次,当您自己为isRTL添加小部件检查时,请按相反的方向添加。例如,如果将小部件添加到
WEST
,则在
isRTL()
为true时将其添加到
EAST
。这两个选项都不是最优的,但我看不到其他解决方案。

我们遇到了相同的问题。对于GWT 2.6.x,您可以通过使用延迟绑定强制LocaleInfo.isRTL()的值为false来实现这一点:

<replace-with class="org.activityinfo.i18n.shared.CldrImplLtr">
    <when-type-is class="com.google.gwt.i18n.client.impl.CldrImpl"/>
    <when-property-is name="locale" value="ar" />
</replace-with>

似乎有一些有趣的事情,但它似乎比支持完全从右到左的界面镜像更易于管理。

您可以在项目中的“com.google.gwt.i18n.client.impl.cldr”包下创建一个名为“CldrImpl_ar”的类(您必须自己创建这个包)。该类将包含以下代码:

package com.google.gwt.i18n.client.impl.cldr;

import com.google.gwt.i18n.client.impl.CldrImpl;

public class CldrImpl_ar extends CldrImpl {
    @Override
    public boolean isRTL() {
        return false;
    }
}
该类已存在于GWT库代码中,但返回值为true。创建此独立类后,它将优先于GWT库中的类,从而实现“覆盖”效果

这正是您想要的:

  • 使用阿拉伯语时无自动镜像效果
  • 只需使用翻译的字符串

  • 最终结果可能不是阿拉伯语用户的最佳体验,但如果支持从右向左不是您项目的优先事项,它确实节省了大量开发时间。

    这不是我的问题。我有这样一个继承:那么问题是什么..详细解释解释详细解释..实际问题是什么问题是当我将语言更改为阿拉伯语时,界面会自动镜像(即:右边的东西转到左边,反之亦然)。我只想改变字符串,就像我们从英语改成西班牙语或其他LTR语言一样。如果有用的话,我使用的是GWT2.7。我不包含任何RTL主题。请在上面发布代码(*.gwt.xml)。谢谢你到现在为止的帮助。
    package com.google.gwt.i18n.client.impl.cldr;
    
    import com.google.gwt.i18n.client.impl.CldrImpl;
    
    public class CldrImpl_ar extends CldrImpl {
        @Override
        public boolean isRTL() {
            return false;
        }
    }