基于 Java 的 i18n/L10n

标签 java internationalization

<分区>

我已经看到国际化在经典的 ASP 购物车中实现为一个最庞大(int,String)键值对的整体字典,其中调用代码向字典传递一个整数表示要返回哪个字符串(与所需语言 ID 进行二进制或运算),每个唯一 int 的值是“国际化”字符串。

这看起来是一种非常、非常、非常糟糕的实现 i18n 的方式。

我正处于我希望国际化的基于 Java 的 Swing 应用程序的“预设计”(如果有这样的事情)阶段。并不是说我会说英语以外的任何东西(哈哈!),但如果将来扩展到其他语言而不必重构 20,000 个字符串会很好。

因此,这引出了一个问题:围绕基于 Java 的 i18n(以及 L10n 相关)的最佳实践是什么?使用了哪些类和结构?显然,如果这最终成为一个大的 com.myproject.i18n 包,其中包含一个“Internationalizer”类作为我其余代码的公共(public)网关,我希望它是一个单例类,是的?

只是在这里请求一些深思熟虑,非常感谢任何朝着正确方向的插入:-)

最佳答案

想法是解决属性文件。它们易于使用,您可以轻松扩展该系统。

你可以找到一个不错的答案here . Netbeans 也有一个很好的示例 tutorial .

在你的语言正确之后,你将需要software切换语言环境、本地化日期和金额等。Kai Toedter 的工具非常可靠。您可以将这些 bean 添加到您的 IDE 中,然后将它们拖放到您的 JPanel 中。

关于基于 Java 的 i18n/L10n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861118/

相关文章:

处理区域设置选择级联逻辑的 Java 库

jsp - Servlet 应用程序中的 Unicode 字符显示为问号

c# - CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol 的等效文本

java - 在 jsonpath 中如何为嵌套 json 对象添加新值?

java - 导入 com.sun.jersey.api.client.ClientResponse 时出现问题;

java - HashMap 中的 MyBatis 参数

java - ExecutorService什么时候回收可运行对象垃圾?

java - 没有方法的抽象类

.net - 从 iso 货币符号获取 NativeEnglishName,而不依赖于登录用户的当前文化

java - 语言切换 - l10n I18n