问题 GWT I18N在服务器端


实施GWT服务器端国际化的最佳方法是什么?

  1. 使用本机Java属性文件(不确定如何阅读以及如何找到正确的语言文件)(unicode字符串需要进行ASCII编码)

  2. 使用 GWTI18N.java  - GWT模块,它使您可以在客户端和服务器上无缝使用GWT I18N,并使用“java.lang.reflect.Proxy方法”

  3. 使用 Kotori I18N  - ......

  4. 其他想法?

如何查找并从客户端到服务器的本地化?

在服务器端,我有一个仍然不使用任何GWT依赖源的Servlet,最好不要这样做吗?


9045
2017-08-17 14:07


起源



答案:


我找到了这个解决方案,它看起来非常好

GWT-国际化服务器  - 在服务器端提供gwt i18n功能的简单支持

目的是允许GWT开发人员在服务器端使用他们的常量和消息接口(参见国际化)。该实现基于java反映api。它从类路径加载属性文件(与接口相同的文件夹)。它支持Constants,ConstantsWithLookup,Messages(复数)。许可证是LGPL。

可以通过以下方式找到客户端当前区域设置:

LocaleInfo.getCurrentLocale().getLocaleName()

16
2017-08-17 14:43



它很容易,而且完美地工作 - Julian Popov


答案:


我找到了这个解决方案,它看起来非常好

GWT-国际化服务器  - 在服务器端提供gwt i18n功能的简单支持

目的是允许GWT开发人员在服务器端使用他们的常量和消息接口(参见国际化)。该实现基于java反映api。它从类路径加载属性文件(与接口相同的文件夹)。它支持Constants,ConstantsWithLookup,Messages(复数)。许可证是LGPL。

可以通过以下方式找到客户端当前区域设置:

LocaleInfo.getCurrentLocale().getLocaleName()

16
2017-08-17 14:43



它很容易,而且完美地工作 - Julian Popov


在SO中的其他线程之后,我想出了这个解决方案,它也考虑了用于属性文件的编码(这可能很麻烦,因为ResourceBundle默认使用“ISO-8859-1”):

import java.io.UnsupportedEncodingException;
import java.util.Locale;
import java.util.ResourceBundle;

public class MyResourceBundle {

    // feature variables
    private ResourceBundle bundle;
    private String fileEncoding;

    public MyResourceBundle(Locale locale, String fileEncoding){
        this.bundle = ResourceBundle.getBundle("com.app.Bundle", locale);
        this.fileEncoding = fileEncoding;
    }

    public MyResourceBundle(Locale locale){
        this(locale, "UTF-8");
    }

    public String getString(String key){
        String value = bundle.getString(key); 
        try {
            return new String(value.getBytes("ISO-8859-1"), fileEncoding);
        } catch (UnsupportedEncodingException e) {
            return value;
        }
    }
}

使用它的方法与常规ResourceBundle用法非常相似:

private MyResourceBundle labels = new MyResourceBundle("es", "UTF-8");
String label = labels.getString(key)

或者您可以使用默认情况下使用UTF-8的备用构造函数:

private MyResourceBundle labels = new MyResourceBundle("es");

0
2018-05-04 23:57