Java 在GWT中使用Hibernate验证程序时,如何国际化错误消息?

Java 在GWT中使用Hibernate验证程序时,如何国际化错误消息?,java,hibernate,gwt,internationalization,hibernate-validator,Java,Hibernate,Gwt,Internationalization,Hibernate Validator,我正在寻找一些关于如何在使用GWT时国际化我的hibernate验证消息的帮助,以便它同时处理客户端和服务器消息 根据,我应该在类路径中放置ValidationMessages.properties文件,或者使用以下代码: Validation .byProvider(HibernateValidator.class) .configure() .messageInterpolator( new ResourceBundleMessageInterpola

我正在寻找一些关于如何在使用GWT时国际化我的hibernate验证消息的帮助,以便它同时处理客户端和服务器消息

根据,我应该在类路径中放置ValidationMessages.properties文件,或者使用以下代码:

Validation
    .byProvider(HibernateValidator.class)
    .configure()
    .messageInterpolator(
        new ResourceBundleMessageInterpolator(
            new PlatformResourceBundleLocator("com.mycompany.Messages")))
    .buildValidatorFactory()
    .getValidator();`
但是,这种方法在客户端使用GWT代码时有效吗?我应该怎么做才能使它在客户端工作?

请检查

如果您想使用GWT对消息进行国际化,请选中并。
我用于常量数据(例如按钮文本、标签文本)。
并且我使用消息数据(例如警报、警告、确认、提示对话框)

不要忘记在gwt.xml文件中添加配置,如下所示

<extend-property name="locale" values="en"/>
<extend-property name="locale" values="ja"/>
<!-- set the fallback for locale default Japan  -->
<set-property-fallback name="locale" value="ja"/>
........
为了将URL更改为本地化,我使用GWT进行了如下转换

public static final String getBaseUrl(final int codesvrPort) {
    String locale = Cookies.getCookie("locale");
    if (locale == null || locale.equals("")) {
        locale = "en";
    }
    String baseUrl = GWT.getHostPageBaseURL() + GWT.getModuleName() + ".html";
    if (GWT.getHostPageBaseURL().contains("localhost")
            || GWT.getHostPageBaseURL().contains("127.0.0.1")) {
        return baseUrl + "?locale=" + locale + "&gwt.codesvr=127.0.0.1:" + codesvrPort;
    }
    return "";
}
是对你有用的链接。我为太多的链接感到抱歉。有一些对你有用的:)

编辑(为属性文件添加后缀) 来自链接的QOUT

注意:为属性文件添加后缀

如果您以前从未处理过国际化问题,您可能想知道为什么将_de后缀附加到德语属性文件中。后缀_de是德语(Deutsch)的标准语言标记。语言标记是表示文档或应用程序的区域设置的缩写。除了指定语言外,它们还可以包含指示区域设置区域的子标记。例如,讲法语的加拿大的语言标签是fr_CA。
在GWT中,属性文件用语言代码后缀表示语言环境(就像Java资源包一样)。默认区域设置的属性文件除外。当运行时未显式设置语言环境时,将使用不带语言代码后缀的属性文件。对于StockWatcher,您已经指定了带有注释的默认转换,而不是使用默认属性文件


因此,更改区域设置的唯一方法是使用
locale=xx
参数在url中指定区域设置?这是否意味着如果用户访问您的页面,首先所有内容都以默认语言加载,然后您从cookie中检测区域设置,并在url中使用locale=xx刷新页面?这似乎很有趣inefficient@ClickUpvote请在“我看不出这如何回答我关于查询字符串/刷新的问题”中选择“为属性文件添加后缀”部分approach@ClickUpvote您的第二条评论对我的getBaseUrl()方法很刻薄。我在一些页面导航中使用了它,比如“getBaseUrl(9997)+”#mylink:“+123”)”。我认为,这可能取决于你如何理解。
public static final String getBaseUrl(final int codesvrPort) {
    String locale = Cookies.getCookie("locale");
    if (locale == null || locale.equals("")) {
        locale = "en";
    }
    String baseUrl = GWT.getHostPageBaseURL() + GWT.getModuleName() + ".html";
    if (GWT.getHostPageBaseURL().contains("localhost")
            || GWT.getHostPageBaseURL().contains("127.0.0.1")) {
        return baseUrl + "?locale=" + locale + "&gwt.codesvr=127.0.0.1:" + codesvrPort;
    }
    return "";
}