我有一个Java Desktop App
,应用程序的用户可以设置aplications语言。
现在,我在数据库中管理它,我调用一个名为- userLanguage的字段的值,它是一个整数,当用户根据这个值登录时,我使用一个开关将相应的文本设置为应用程序上的每个元素(案例1:设置标签文本英语,案例2:设置标签文本西班牙语.等)
但我听说,控制数据库中的语言是一种侮辱,我想知道哪种方式是好的,或者怎样才是最好的方法,这不重要,不管有多难,但使应用程序国际化的方法的效率才是metters对我来说的。
发布于 2014-08-14 16:59:17
实际上,我会使用Java首选项来处理这个问题。它以一种独立于系统的方式分别保存每个用户的首选项(至少对您而言)。如果使用XML,则需要创建SAX/DOM解析器,或者如果使用DB,则需要使用jdbc。无论是XML还是DB都不是一个糟糕或艰难的解决方案,我只是认为首选项是最简单的。
对于国际化,我将使用本地化于不同地区的ResourceBundle。这是一个相当大的话题--参见Java国际化(I18n)教程
发布于 2014-08-14 17:36:23
发布于 2014-08-15 00:40:54
你收到了两个答案,这两个答案都是明显错误的。如果您有Java桌面应用程序,您应该编写以下代码:
Locale locale = Locale.getDefault(Locale.Category.DISPLAY);
这将为您的应用程序提供有效的用户界面语言--在他的OS首选项中设置的一个用户。如果您想要将语言保存在数据库或某种首选项中,您将迫使用户选择语言。干什么用?For what?我已经设定了我想要的语言。如果您没有它,那么让Java回到应用程序的默认状态。
如果您想知道,如果您使用ResourceBundle
,默认的是在其名称中没有区域设置的默认设置。这是除非您通过使用自定义ResourceBundle.Control
覆盖此进程。
https://stackoverflow.com/questions/25319596
复制