2011-09-07 51 views
0

我要本地化我的MySQL数据库,我不知道如何做到最好:本地化的数据库信息

1)针对不同的语言创建附加列: ID Field1_RU Field2_RU Field1_EN Field2_EN Field1_UA Field2_UA

当从DB负荷记录,传递给SQL查询语言参数 “RU”

2)针对不同的语言CRE吃了不同的表格或数据库。

那么我怎样才能以一种好的方式本地化我的数据库?感谢名单!

+0

您是试图本地化数据库*用户界面*还是实际的数据本身? –

回答

1

您需要支持多少种语言?如果只有一两个,那么在每个表中使用带有语言前缀的额外字段。如果它是一个任意数字或大数字(例如> = 3),则使用子表格来存储每个字段的多语言数据以及语言标识符。

+0

这两种解决方案中的任何一种都会导致数据库不规范化,并且两者都要求程序员包含逻辑以实时重写SQL(在第一种情况下更改列名称,第二种情况下更改表名) 。 –

+0

@larry:不是。 '在parent.id = subtable.id和language ='EN''上选择subtable.text join subtable。将语言代码与翻译文本一起存储在字段中。唯一的改写就是插入语言代码。 –

+0

我假设每个语言都有一个子表,因此是“子表”。部分会改变为每种语言。如果每种语言没有不同的表格,为什么你需要子表格(而不是带有语言标识符的单个表格)? –

2

一般来说,最好的解决方案是一张表,一组列和一个额外的列来指定语言。然后,为该数据库中的每种语言添加一行。使用这种技术选择不同的本地化就像在您的查询中更改单个参数的值一样简单 - 无需尝试重​​新编写SQL来查看不同的列或不同的表。

但是,如果您尝试本地化应用程序界面或实际本地化数据库中的数据记录,我不清楚。

+0

我想本地化数据库中的数据记录 – yozhik

+0

使用一个表,一组列和一个新列来指定语言。这将导致正确的标准化,易于针对数据库编程。 –