【问题标题】:how to get locale information on a GWT application如何获取 GWT 应用程序的语言环境信息
【发布时间】:2010-09-06 05:08:36
【问题描述】:

在 GWT 中,我必须指定我的应用程序支持哪些语言环境。代码在各种文件中编译,每个语言环境一个(在其他版本旁边),但我必须给我的客户一个唯一的 URL。该 URL 应该是应该根据浏览器首选的语言环境显示的页面。 我不想为语言环境设置 HTTP 参数,因为我想设置浏览器首选的语言环境。 这如何在 GWT 中编码?

我应该尝试使用 apache 重写规则吗?我偷了它,但我认为我无法在重写规则中轻松访问此类参数。

非常感谢, 朱塞佩

【问题讨论】:

    标签: url gwt locale


    【解决方案1】:

    我遇到了和你一样的问题,但是因为我真的需要知道当前的语言环境(我正在请​​求第二台服务器来获取我想要本地化的数据),所以我找到了这个类: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()。这应该会给你 GWT 当前使用的内容。

    【讨论】:

    • eppesuig 我知道你已经有了答案,但正如我在寻找解决方案时在此页面上所感受到的,我说其他人可能也会落入这里。 BR
    【解决方案2】:

    GWT 对国际化有很好的支持。请参阅此link。 i18nCreator 命令可以帮助您设置国际化基础架构,类似于 projectCreator 和 applicationCreator 设置 GWT 应用程序的方式。

    如果您有需要国际化的静态字符串(即 Invalid Entry!),则不需要 i18nCreator 命令的任何附加标志来创建属性文件和基础结构。

    如果您有需要接受参数的字符串(即 Hello {0}),则需要将 -createMessages 标志传递给 i18nCreator 命令以创建属性文件和基础结构。

    现在您的模块需要在 MyApplication.gwt.xml 中包含 i18n 模块:

    <inherits name="com.google.gwt.i18n.I18N"/>
    

    在与扩展常量或消息的属性文件相同的包中定义一个 Java 接口,并定义所有返回字符串的方法(名称与属性条目匹配)。

    MyConstants.properties 包含:

    errorMessage=Invalid Entry!
    

    MyConstants.java 包含:

    import com.google.gwt.i18n.client.Constants;
    
    public interface myConstants extends Constants {
        String errorMessage();
    }
    

    现在从您的应用程序访问这些国际化字符串:

    public class MyApplication implements EntryPoint {
        private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class);
    
        public void onModuleLoad() {
            final Label errorMessage = new Label(constants.errorMessage);
        }
    }
    

    GWT 自动为您实现接口。

    您可以通过类似的方式获取消息。

    希望这可以帮助您入门。

    【讨论】:

      【解决方案3】:

      除非我没有正确阅读文档,否则我认为您无需做任何事情。

      GWT and Locale

      通过将语言环境设置为客户端属性,gwt.js 中的标准启动过程会选择应用程序的适当本地化版本,从而提供易用性(这比听起来容易!)、优化的性能和最小的脚本大小。

      按照我的阅读方式,只要你的模块把所有的locale选项都加进去了,应该是自动的吧?

      【讨论】:

      • 该文档谈到将 ?locale=foo 添加到每个 url。这种“手动”添加很糟糕,因为浏览器已经发送了所需语言环境的列表。
      【解决方案4】:

      检查这个 com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale()

      【讨论】:

        【解决方案5】:
        <inherits name="com.google.gwt.i18n.I18N"/>
        
        <!-- Use browser-specified locale for i18n -->
        <set-configuration-property name="locale.useragent" value="Y"/>
        
        <!-- Specify locales your application support -->
        <extend-property name="locale" values="en"/>
        <extend-property name="locale" values="de_DE"/>
        <extend-property name="locale" values="ru_RU"/>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-07-11
          • 2023-03-08
          • 1970-01-01
          • 2012-04-23
          • 2018-08-09
          • 1970-01-01
          • 2018-09-01
          相关资源
          最近更新 更多