在数据库中排序和i18n

时间:2009-12-02 22:34:16

标签: database sorting internationalization

我的数据库中有以下数据:

ID   Name    Region
100   Sam     North
101   Dam     South
102   Wesson  East
...
...
...

现在,该地区的语言将有所不同。我希望排序正确,基于显示值而不是内部值。

任何想法? (是的,使用Java在内存中排序不是一种选择!)

3 个答案:

答案 0 :(得分:1)

不幸的是,如果您想在数据库中执行此操作,则必须将国际化版本存储在数据库中(或至少在其数据库中)。否则,数据库引擎怎么可能知道如何排序?

您必须创建一个包含三列的表:英文版,语言代码和翻译版(英文版和语言代码一起作为主键)。然后使用英语单词和语言代码加入到此查询表中,然后对国际化版本进行排序。

答案 1 :(得分:0)

你是什么意思“展示价值”?我认为你在某种程度上将它转换为另一种语言在java本身中,并且不在db中存储该值(本地化的,我假设)?如果是这样,你就有点搞砸了。您需要将数据放入数据库才能在那里进行排序。

答案 2 :(得分:0)

使用国际化的最佳方法是从应用程序中删除国际化并将其保存在单独的i18n数据库中。在您的应用程序中,您保留一个可用于访问这些分离数据库的密钥,通常为xml或yml。

根据经验,我建议:

  • 将所有数据库保存为一种格式,一个地方
  • 从您的应用程序中提取国际化字符串
  • 允许您的应用程序从国际化数据库中提取i18n中的i18n字符串。

您可以检查i18n的RAILS方法。它简单,干净,易于使用。