国际化Java应用程序?

时间:2014-08-15 00:27:00

标签: java internationalization

我有一个Java Desktop App,应用程序的用户可以设置aplications语言。

现在我在数据库中管理它,我调用一个名为 - userLanguage的字段的值 - 这是一个 Integer ,当用户根据此值登录时,我设置了相应的使用开关将文本添加到应用程序中的每个元素(案例1:设置标签文本ENGLISH,案例2:设置标签文本SPANISH ......等)

但是我听说从数据库中控制语言是一种侮辱,我想知道哪种方法很好,或者最好的方法是什么?它并不重要,但是这种方法对国际化应用程序的效率是适合我的。

3 个答案:

答案 0 :(得分:1)

我实际上会使用Java Preferences处理这个问题。它以独立于系统的方式(至少为您)分别保留每个用户的首选项。如果使用XML,则需要创建SAX / DOM解析器,或者如果使用DB,则需要使用jdbc。无论是XML还是数据库都不是一个糟糕的解决方案,我认为首选项是最简单的。

对于国际化,我会使用针对不同语言环境进行本地化的ResourceBundle。这是一个非常重要的主题,请参阅The Java internationalization (I18n) tutorial

答案 1 :(得分:1)

Java Preferences就是您正在寻找的。

或者,您可以使用Properties

,而不是使用XML文件
  

......我听说从数据库中控制语言是一种侮辱......

我不同意这一点。我认为这是依赖于场景的,在你的情况下我认为你应该保持它的方式以避免不必要的工作,除非绝对需要将首选的习惯用法保留在你的数据库之外。

答案 2 :(得分:0)

你收到了两个答案,这两个答案都是明显错误的。如果您有Java Desktop Application,那么您应该使用以下代码:

Locale locale = Locale.getDefault(Locale.Category.DISPLAY);

这将为您的应用程序提供有效的用户界面语言 - 在其操作系统首选项中设置的一个用户。如果您想将语言保留在数据库中或某种偏好中,您将强制用户选择语言。做什么的?我已经设置了我想要的语言。如果您没有,请让Java回退到您的应用程序的默认值 如果您想知道,如果使用ResourceBundle,则默认值为其名称中没有Locale的默认值。除非您使用自定义ResourceBundle.Control覆盖此过程。