java - 如何在数据库应用中最好地处理多种语言?

标签 java sql database design-patterns internationalization

我有一系列属性文件,用于以各种语言显示消息。
因此,根据当前的语言设置,消息可能会以英语、法语或德语等显示。
在我的数据库中,我有各种记录,而不是实际值,我放置了属性文件的键,以便在使用该数据检索记录时,我可以用相应的语言显示消息。
例如。我的数据库中可能有这样一条记录:

约翰|史密斯|阿Q|等等

其中AQ在相应属性文件中可以显示为DoctorArzt
我的问题是我需要偶尔对这些属性进行排序,虽然这些属性在数据库中的值是代码,但无法在数据库中进行排序。
来自 here我得到了使用临时表和排序的建议,但这对我来说就 1 个属性来说没问题。
我正在寻找一种更通用的解决方案来处理多个属性文件,并尽可能避免检查代码:
例如如果此查询在 X 上排序,则创建此临时表 等等。
有没有通用的解决方案?

最佳答案

与其将语言信息存储在属性文件中,不如将其存储在数据库的表中。然后这一切都可以轻松完成。

Records:
first | last  | messageid |
John  | Smith | 1         |

Messages:
messageid | language | message |
1         | English  | Mr.     |
1         | Spanish  | Sr.     |
2         | English  | Doctor  |
etc...

然后按本地语言的消息排序的查询将是这样的:

select first, last, message from records r
    inner join messages m on m.messageid = r.messageid
    where language = [your current language]
    order by message

关于java - 如何在数据库应用中最好地处理多种语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065247/

相关文章:

java - 无法将驱动器号放入java中的文件路径中

java - JFrame 类型的 createGUI() 方法未定义

mysql - SQL 填充常量以防连接两个表时不匹配

c# - 增量导出和导入 postgresql C#

mysql - 根据 id 的数组查询 id

java - 在 Gnome 桌面上打开 .jar 文件

java - 使用 hibernate 获取两个时间戳差异的平均值

mysql - #1241 插入到选择中的操作数应包含 1 列

javascript - MongoDB 和 Meteor - 插入嵌套数组的查询不起作用,没有抛出错误

java - 如果没有自动完成,如何手动注入(inject) Spring 注入(inject)