2015-05-01 104 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; } 
} 

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