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

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

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

ResouceBundle类的工作方式是,尝试使用本地化消息加载 (通常是.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 

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

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

也可以看看:

资源包

国际化快速介绍

Java教程有一个国际化的踪迹 。 它涵盖了国际化的核心语言function。

我建议看一下ResourceBundles。

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

这基本上是域的问题。 如果您在网上,大多数主要框架将为I18N提供一种方法(在Spring中,这适用于.properties文件和taglib )。

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