【问题标题】:what is best practice to implement i18n usage java? [closed]实现 i18n 使用 java 的最佳实践是什么? [关闭]
【发布时间】:2010-10-27 15:00:51
【问题描述】:

使用 java 实现 i18n 的最佳实践是什么?

【问题讨论】:

标签: java internationalization


【解决方案1】:

您可以使用ResourceBundle.getBundle( name ),它会根据用户区域设置返回正确的捆绑包并获取特定消息。

ResouceBundle 类的工作方式是,尝试使用本地化消息加载 bundle(通常是 .properties 文件)。例如,您可以:

messages_en.properties
-----
greeting = "Hello "

messages_es.properties
-----
greeting = "Hola "

并按如下方式使用。

... void main( ... . {
     ResourceBundle bundle = ResourceBundle.getBundle( "messages", userLocale );
     System.out.println( bundle.getString("greeting" )  + " Steve " );
 }

它会打印出来

Hello Steve

如果用户语言环境是英语 (en),并且

Hola Steve

如果用户语言环境是西班牙语 (es)

ResouceBundle.getBundle() 方法不仅可以加载 .properties 文件,如果可用,它还可以加载一个类,该类又可以从数据库加载消息。

另见:

ResourceBundle

Internationalization Quick Intro

【讨论】:

    【解决方案2】:

    Java 教程有一个Internationalization trail。它涵盖了国际化的核心语言功能。

    【讨论】:

      【解决方案3】:

      我建议查看 ResourceBundles。

      这是一个复杂的问题,因为如果你有一个数据库,你也会想要 I18N。

      【讨论】:

        【解决方案4】:

        这基本上是域的问题。如果您在网络上,大多数主要框架都会为 I18N 提供一种方式(在 Spring 中,这可以工作 with .properties files and taglibs)。

        相反,对于桌面应用程序,资源注入可能是一个有趣的选择。 Spring Application Framework 更进一步,让您可以完全从配置文件中配置命名的 Swing 组件(按钮、标签等)。有了它,您可以设置组件的颜色和边框,还可以设置它们的文本。

        【讨论】:

          猜你喜欢
          • 2020-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          • 1970-01-01
          • 2011-11-21
          • 2019-10-21
          相关资源
          最近更新 更多