2015-05-01 2 views
1

У меня проблема (предполагается, что это функция GWT), когда я интернационализирую свой Webapp на языке RTL. В принципе, функция 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 для текста. Так что это не вариант.

У меня есть два варианта. Во-первых, не используйте виджеты, которые используют проверку RTL, или, во-вторых, при добавлении проверки виджета на isRTL самостоятельно и добавьте его в противоположном направлении. Например, если вы добавите виджет в WEST, добавьте его в EAST, когда верно isRTL(). Оба варианта не оптимальны, но я не вижу другого решения.

1

GWT Поддержка Оба RTL & LTR Langauages ​​

  • Если вы хотите иметь LTR (слева направо) затем используйте <inherits name="com.google.gwt.user.theme.chrome.Chrome"/> (тема по умолчанию) в *.gwt.xml
  • Если вы хотите иметь RTL (право на Le фут) тема затем использовать <inherits name="com.google.gwt.user.theme.chrome.ChromeRTL"/> в *.gwt.xml

В вашем случае если вы не хотите особенность GWT зеркал интерфейс для RTL затем использовать <inherits name="com.google.gwt.user.theme.chrome.Chrome"/>

+0

Это не моя проблема , Я наследую это:

+0

то в чем проблема..explain тщательно –

0

У нас была такая же проблема. С GWT 2.6.x, вы можете сделать это с помощью отложили связывание, чтобы заставить значение LocaleInfo.isRTL() ложь:

<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; } 
} 

Там, кажется, несколько забавных вещей, но это, кажется, более управляемым, чем поддерживать полное право налево зеркальное отображение интерфейса.

Смежные вопросы