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

时间:2010-10-27 15:00:51

标签: java internationalization

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

4 个答案:

答案 0 :(得分:14)

您可以使用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

如果用户区域设置是西班牙语

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

另见:

ResourceBundle

Internationalization Quick Intro

答案 1 :(得分:3)

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

答案 2 :(得分:1)

我建议您查看ResourceBundles。

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

答案 3 :(得分:1)

这基本上属于域名问题。如果您在网络上,大多数主要框架将为I18N提供一种方式(在Spring中,这有效with .properties files and taglibs)。

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