【发布时间】:2010-12-31 02:44:59
【问题描述】:
我希望我的数据库支持其表中所有文本值的多语言。
那么最好的方法是什么?
Edit1::
例如
我有这个“人”表:
ID int
FirstName nvarchar(20)
LastName nvarchar(20)
Notes nvarchar(max)
BirthDate date
...........
如果我希望我的程序支持新语言“让我们说法语”。
是否应该在每次添加新语言时添加新列? 所以我的“Person”表看起来像这样
ID int
FirstName_en nvarchar(20)
FirstName_fr nvarchar(20)
LastName_en nvarchar(20)
LastName_fr nvarchar(20)
Notes_en nvarchar(max)
Notes_fr nvarchar(max)
BirthDate date
...........
或者我应该添加 2 个新表,一个用于语言,另一个用于“Person_Languages”值?
所以这看起来像: “语言”表:
ID int
Lang-symbol nvarchar(4)
" 人 " 表格:
ID int
BirthDate Date
最后是“Person_Translation”表:
LangID int
PersonID int
Translation nvarchar(max)
还是有更好的??
.
【问题讨论】:
-
请澄清...您的意思是对于每一行中的每个文本字段,您都希望能够存储多种语言的翻译吗?我的意思是,Unicode 将简单地为大多数语言启用文本存储,但您仍然需要一个适当的结构来存储多个翻译。
-
在下面查看我的答案。简而言之,我选择为每个需要翻译的表创建一个单独的表。如果您确定只需要支持两种左右的语言(想想像加拿大这样拥有固定数量的官方广泛使用的语言的国家),那么添加新列是一种有效的方法。对于应用程序中的一般多语言支持,我不推荐这种方法。
-
Wahid,你的答案满意吗?还是您还在寻找更多建议?
-
其实我还在努力寻找更好的解决方案。如您所见,我正在应用此解决方案,但我对性能有疑问。我会接受您的回答,谢谢:)
-
Wahid,我很想听听您遇到的其他方法。
标签: database database-design localization globalization database-schema