【问题标题】:GWT i18n with properties from database具有数据库属性的 ​​GWT i18n
【发布时间】:2014-04-15 15:03:51
【问题描述】:

有没有办法从 i18n 标准的数据库中加载属性?

在现有方法中,

  • 它从属性文件加载属性。
  • html 实体默认被转义。
  • 如果我想更改一个属性,我需要每次重新启动服务器以反映更改。

【问题讨论】:

    标签: gwt internationalization


    【解决方案1】:

    您可以使用数据库中的数据而不是属性文件来设置文本。但是,在您这样做之前,请考虑一下缺点:

    • 您必须编写代码以从数据库中检索每个值,因为该值在编译时是未知的。

    • 您不知道是否错过了任何属性,因为这些属性未编译。如果您确实错过了某个属性,您的用户将不会收到任何文本。

    • 您的应用程序必须多次调用服务器才能显示每个视图,这会大大降低您的应用程序的速度。您可以通过使用 JSP 使用 dynamic string i18n 动态生成键值对来部分缓解这种情况,但加载时间仍然会比使用静态 i18n 慢。

    这就是为什么我从未见过这样做的原因。

    【讨论】:

    • 感谢您的回复先生,从数据库中获取值是一种选择。但即使我从属性文件中获取价值,我也会遇到以下问题。我不能在属性值中使用 unicode 字符,因为 HTML 字符默认会被转义。例如,我需要属性值 வணக்கம் 的文本,所以我在属性文件中添加以下文本(用于泰米尔语(ta)),வணக் 2965;ம்但它并没有显示为வணக்கம்,而是按原样显示(因为默认情况下会转义 HTML 字符)。我该如何预防。
    • 如果您在属性文件中使用 UTF8 并在编译时设置 UTF8,您的环境应该可以工作。 GWT i18n 源文件有很多非 ascii 字符,它们是 utf8 格式。无论如何,如果您更喜欢 ascii 中的属性文件,则必须使用 unicode (\u2990) 而不是 html 转义 (ம)
    • 在 Eclipse 中安装 ResourceBundle 编辑器,如果您还没有使用它。然后在此编辑器中打开您的属性文件。
    • 当使用 \u2990 时,它会给出类似“⦐”(未知字符)的输出。还尝试使用 ResourceBundle 编辑器,它只是将 \u2990 替换为 \\u2990。我需要的是,是否有任何选项可以禁用转义 HTML 字符?
    • 在 ResourceBundle 编辑器中,您应该在泰米尔语中键入或粘贴文本(在将编码设置为 UTF-8 之后)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多