19

我的组织即将开始漫长的国际化(i16g?)其公司网站的过程。该网站混合了 Java EE(JSP/Servlets,无 EJB)和从(Documentum)WCM 推送的静态内容。

虽然我有使用 's 的“内置”机制ResourceBundle以及每种语言/区域设置的关联属性文件(包含“KEY = Translated value”方法)的经验,但我们只需在我们想要的地方引用 KEY 值出现的翻译文本。

我的主管提到他在以前的组织中使用了一种不同的方法,他们使用了第 3 方库(他不记得实际名称),其中包括网页中的实际 [英文] 文本(以帮助开发人员)在运行时替换为配置 xml 文件中的翻译内容。(有人知道这会是哪个图书馆吗?)

我对可能有哪些其他方法/库/框架来促进这一点感兴趣。

谢谢

4

5 回答 5

13

你的老板可能是指gettext,就像@Pawel Dyda 提到的那样,但你也可能对cosmopolitan感兴趣。

于 2012-04-10T08:40:13.103 回答
5

我的公司还为 Java 维护了一个与 GNU gettext 相关的库(很快就会有针对 Scala 的扩展)。

它不仅支持 GNU gettext 的所有优点,还简化了日期/时间戳和货币的输出和输入,包括在翻译中使用“wiki”格式的工具(例如,您可以在单词上输出 HTML 粗体) ,java消息格式,通用的“转义”支持(因此输出可以自动转义以包含在HTML中)和货币四舍五入。

它是开源的,目前在 github 上https://github.com/awkay/easy-i18n/

于 2014-02-01T19:18:54.800 回答
4

当我听说你在使用ResourceBundles 时,我看到如下内容:

ResourceBundle rb = ResourceBundle.getBundle("messages", locale);
String someString = rb.getString("some.key");

如果这是您的 Java 服务器页面方法(在 scriplets 中使用此类片段),这是错误的。相反,您应该使用 JSTL 或 Spring 消息标签。

至于您的询问,我相信他们使用了 Gettext(抱歉没有链接,因为我的时间不多了)。这不是最好的方法。JSTL 方法是 JSP 最常见的方法,您应该坚持使用它,除非您有充分的理由不这样做。

于 2012-04-10T07:41:53.207 回答
1

值得一看http://alexsexton.com/blog/2012/03/the-ux-of-language/它很好地解释了 gettext 背后的想法和 gettext 设计的局限性 gettext 的更好方法是ICU 消息格式这是 JDK MessageFormat 类所基于的,在http://site.icu-project.org/home上还有一个基于 ICU 消息格式的 javascript 库https://github.com/SlexAxton/messageformat .js

于 2013-01-05T19:01:49.783 回答
1

我希望,现在建议另一种解决方案还为时不晚:https ://github.com/resource4j/resource4j

该库与 Thymeleaf 网页渲染器集成,解决了您提到的问题:您在页面模板中包含英文文本,然后在运行时将其替换为本地化版本。

于 2016-07-01T07:55:16.543 回答