GWT国际化为阿拉伯语(RTL语言)?
当我将我的Webapp国际化为RTL语言时,我遇到了一个问题(应该是GWT特性)。基本上,GWT特性将接口镜像到RTL,我不希望发生这种情况 我怎样才能防止GWT自动镜像我的界面,而只保留已翻译的字符串 以下是我的*.gwt.xml代码: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
<!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;
}
}