2015-05-01 64 views
1

当我将Webapp国际化为RTL语言时,我遇到了问题(应该是GWT功能)。基本上,GWT功能将界面映射到RTL,我不希望发生这种情况。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> 

问候

+0

解释详细说明。什么是实际问题 –

+0

问题是,当我将语言更改为阿拉伯语时,界面会自动镜像(即:右边的东西去左边,反之亦然)。 我希望只是字符串改变,就像我们从英文换成西班牙语或其他LTR语言一样。 –

+0

如果它有帮助我使用GWT 2.7。我不包含任何RTL主题。 –

回答

0

Unfortunally这是一个数字的GWT小部件的功能。这些小部件在内部调用LocaleInfo.getCurrentLocale().isRTL(),即使您想以某种方式更改此调用的返回值,它也会禁用文本的rtl。所以这不是一个选项。

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

1

GWT支持RTL & LTR Langauages

  • 如果你想有LTR(从左至右)主题然后使用<inherits name="com.google.gwt.user.theme.chrome.Chrome"/>(默认主题)*.gwt.xml
  • 如果您想拥有RTL(Right to Le然后英尺)主题*.gwt.xml

使用<inherits name="com.google.gwt.user.theme.chrome.ChromeRTL"/>你的情况,如果你不想GWT特征反映了接口RTL然后使用<inherits name="com.google.gwt.user.theme.chrome.Chrome"/>

+0

这不是我的问题。我有这个继承:

+0

那么是什么问题..精心解释 –

0

我们遇到了同样的问题。使用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> 

你可以离开了<when-property-is标签,如果你想迫使这 所有语言环境。

,然后提供一个简单的CldrImplLtr类:

public class CldrImplLtr extends CldrImpl { 

    @Override 
    public boolean isRTL() { return false; } 
} 

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