在Java中实现国际化(i18n)的最佳实践是什么?

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

请查看个人博客文章,了解Java国际化的介绍和示例:http://tshikatshikaaa.blogspot.nl/2012/11/introduction-to-java-internationalization.html - Jérôme Verstrynge
4个回答

15

您可以使用ResourceBundle.getBundle(name),该方法根据用户的语言环境返回正确的bundle并获取特定的消息。

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

国际化快速介绍


4

Java教程有一个国际化专题,它涵盖了国际化的核心语言特性。


1
我建议看一下ResourceBundles。
这是一个复杂的问题,因为如果你有一个数据库,你也需要对其进行国际化(I18N)。

1

这基本上是一个领域问题。如果您在Web上,大多数主要框架都会提供一种I18N的方式(在Spring中,这可以通过.properties文件和taglibs实现with .properties files and taglibs)。

相反,对于桌面应用程序,资源注入可能是一个有趣的选择。Spring应用程序框架甚至可以让您完全从配置文件中配置命名的Swing组件(按钮、标签等)。通过这样做,您不仅可以设置组件的颜色和边框,还可以设置它们的文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接