6

我们有一个 PostgreSQL 数据库。而且我们有几个表需要以多种语言保存某些数据(幸运的是,可能的语言列表是在系统范围内定义的)。

例如让我们开始:

create table blah (id serial, foo text, bar text);

现在,让我们让它多语言。怎么样:

create table blah (id serial, foo_en text, foo_de text, foo_jp text,
                              bar_en text, bar_de text, bar_jp text);

这对于 Postgres 中的全文搜索很有用。只需为每种语言添加一个 tsvector 列。

但它是最优的吗?也许我们应该使用另一个表来保存翻译?喜欢:

create table texts (id serial, colspec text, obj_id int, language text, data text);

也许,只是也许,我们应该使用其他东西——SQL 世界之外的东西?任何帮助表示赞赏。

4

2 回答 2

1

我认为最好创建两个表。一种用于语言,一种用于 id,依此类推。first_table(id) second_table(s_id, id_first_table, language_id, language_text)

于 2010-03-28T21:39:58.223 回答
0

这是 Mozilla 开发人员整理的一篇关于使他们的数据库多语言化的精彩文章。它是 CakePHP 特有的,但这些信息可以很容易地应用于其他系统。另外,请注意,它使 SQL 查询变得更加复杂,这是一个缺点。不过,无论您的 i18n 实现如何,这通常都是正确的。

  1. 第1部分
  2. 第2部分
  3. 第 3 部分
于 2010-03-28T21:34:23.100 回答