【发布时间】:2018-08-28 07:26:17
【问题描述】:
我想知道是否可以(以及使用哪种工具)在 Java 中执行类型安全 i18n。也许不清楚所以这里有一些细节,假设我们使用基于MessageFormat的东西
1) 使用类型安全参数进行翻译
我想避免使用像String translate(Object key,Object... values) 这样的接口,其中的值是无类型的。使用错误的参数类型应该是不可能调用的。
注意,我可以指定所有键的类型。我正在寻找的解决方案应该是可扩展的,并且不应显着增加后端启动时间。
2) 应该在编译时知道哪些键仍在使用
我不希望我的翻译键库像许多网站的 CSS 一样,永远增长和增长,每个人都害怕删除键,因为我们不容易知道它们是否仍然有用。
在 JS/React 领域有 babel-plugin-react-intl 允许在编译时提取仍然在代码中找到的翻译键。然后我们可以使用我们的翻译后端/SaaS 来区分这些密钥,并自动删除未使用的密钥。在 Java 领域有什么类似的经历吗?
我正在寻找:
- 任何可以让 i18n 在 Java 中更易于管理的技巧来解决我遇到的这 2 个问题
- 当前可能帮助我解决问题的工具
- 提示在不存在工具的情况下如何实现自定义功能
另外,Enum 是否适合存储大量固定的翻译键列表?
【问题讨论】:
标签: java internationalization messageformat