gpt4 book ai didi

用于动态生成内容的 GWT 国际化

转载 作者:行者123 更新时间:2023-12-02 20:59:16 27 4
gpt4 key购买 nike

对于我的大部分应用程序,我可以使用 https://developers.google.com/web-toolkit/doc/latest/DevGuideI18n 中列出的推荐国际化技术。 (主要是UIBinder方法)。

我目前正在使用单个小部件,该小部件接收一个对象并动态显示其属性/字段,因此无法使用 UIBinder 和上述国际化技术。

我是否只需要更改我的设计并为我希望显示的每种类型的对象创建多个小部件,或者是否有我尚未找到的既定国际化技术?

最佳答案

您需要重新阅读标题为 Dynamic String Internationalization 的开发指南。 .

这种方法意味着您需要编写语言环境支持代码。我们已经使用 Dictionary 完成了此操作类(class)。提供区域设置支持的技巧是为每个区域设置一个字典。

第 1 步-确保将 GWT module.gwt.xml 的区域设置概念与 cookie 一起使用。确保在 gwt 应用程序加载之前设置 cookie GWT_LOCALE。

<extend-property name="locale" values="en,ar,de" />
<set-property name="locale" value="en" />
<set-property-fallback name="locale" value="en" />
<set-configuration-property name="locale.cookie" value="GWT_LOCALE" />
<set-configuration-property name="locale.useragent" value="Y" />

第 2 步-使用 html 脚本标签预先加载 WidgetMessages.js,或者如果您希望按需延迟获取,请使用 RequestBuilder。 WidgetMessages.js 的内容

var widget_messages_en = {
"today" : "Today",
"now" : "Now"
};

var widget_messages_ar= {
"today" : "۷ڤدجچ",
"now" : "چڤت"
}

var widget_messages_de= {
"today" : "Today",
"now" : "Now"
}

第 3 步-处理字典并将其加载到本地 HashMap 中。

    private static Map<String, Dictionary> I18N_DICTIONARIES = new HashMap<String, Dictionary>();

private static Dictionary createDictionary( String dictionaryName)
{
String moduleId = dictionaryName + "_messages_" + LocaleInfo.getCurrentLocale().getLocaleName();
Dictionary dictionary = Dictionary.getDictionary( moduleId );
I18N_DICTIONARIES.put( dictionaryName, dictionary );
return dictionary;
}

public static String getI18NString(String dictionaryName, String stringToInternationalize )
{
Dictionary dictionary = I18N_DICTIONARIES.get( dictionaryName);
if ( dictionary == null )
{
dictionary = createDictionary( dictionaryName);
}
String i18string = null;
if ( dictionary == null )
return stringToInternationalize;
try
{
i18string = dictionary.get( stringToInternationalize );
}
catch ( Exception e )
{
}
return i18string;
}

注意 - 您可以尝试上述方法的几种变体来将字符串处理为 i18nstring 并在小部件上使用它们......

关于用于动态生成内容的 GWT 国际化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15256782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com