Database design 设计数据库体系结构:DB用于两种不同的语言
我有一个网站,应该有不同语言的相同内容的翻译。因此,它应该具有相同字符串的不同翻译的数据库条目。 它不仅仅是一个小网站,所以有很多不同的复杂数据结构 我有一个想法如何实现这一点。但我真的不喜欢它 我想引入一个额外的翻译表,在这个表中,我们计划存储不同语言的字符串字段 例如,对于包含三个字符串字段(name、shortDescr、fullDescr)的表项目,我将以下一种方式使用翻译表: 我将把name、shortDescr、fullDescr字段从string改为integer(包含从link(ID)到translationTxtID的链接)。不同的translationTxtID和lang字段将为每个字符串标记和语言定义唯一的字符串。Database design 设计数据库体系结构:DB用于两种不同的语言,database-design,localization,translation,Database Design,Localization,Translation,我有一个网站,应该有不同语言的相同内容的翻译。因此,它应该具有相同字符串的不同翻译的数据库条目。 它不仅仅是一个小网站,所以有很多不同的复杂数据结构 我有一个想法如何实现这一点。但我真的不喜欢它 我想引入一个额外的翻译表,在这个表中,我们计划存储不同语言的字符串字段 例如,对于包含三个字符串字段(name、shortDescr、fullDescr)的表项目,我将以下一种方式使用翻译表: 我将把name、shortDescr、fullDescr字段从string改为integer(包含从link
所以这个解决方案会奏效,但我正在寻找更优雅的解决方案。你能给我建议一个解决这个问题的办法吗 为什么不在表中有多个条目,每个lang对应一个条目?PK可以是ID和LangID的组合。对于上面的示例:
Project
ID, int
LangId, int
Name, varchar
shortDesc, varchar
Fulldesc, varchar
date, date
然后,您需要在代码中设置一个语言变量,并在查询中将其作为查询中的一个选项提供(我在这里使用SQL作为参考):
您可以在该特定会话的所有查询中保留langid。为什么不在表中设置多个条目,每个lang对应一个条目?PK可以是ID和LangID的组合。对于上面的示例:
Project
ID, int
LangId, int
Name, varchar
shortDesc, varchar
Fulldesc, varchar
date, date
然后,您需要在代码中设置一个语言变量,并在查询中将其作为查询中的一个选项提供(我在这里使用SQL作为参考):
您可以将langid保存到该特定会话的所有查询中
你能给我建议一个解决这个问题的办法吗
对
不要使用整数键。事实上,这不是你自己发明的。只需使用gettext
。你已经在几乎所有的操作系统上都有了它。这是一款快速、经过验证的软件,您无需编写
执行标准gettext
模块为i18n所做的操作。(见附件)
gettext
。你已经在几乎所有的操作系统上都有了它。这是一款快速、经过验证的软件,您无需编写
执行标准gettext
模块为i18n所做的操作。(见附件)
我为每个包含字符串的父表使用本地化表。因此,如果您有一个表“Project”,那么您也会有一个表“Project\u Locale”。Project_Locale与Project+具有相同的主键,并添加了一个“Culture”字段。所有可本地化的字符串字段都在Project_Locale中,其他所有字段都在Project中。我为每个包含字符串的父表使用本地化表。因此,如果您有一个表“Project”,那么您也会有一个表“Project\u Locale”。Project_Locale与Project+具有相同的主键,并添加了一个“Culture”字段。所有可本地化的字符串字段都在Project\u语言环境中,其他所有字段都在Project中。我的选择是
Project
-------
ProjectID (PK)
Date
ProjectLoc
----------
ProjectID (FK)
Lang
Name
ShortDesc
FullDesc
然后可以运行一个简单的查询,如
SELECT Project.ProjectID, Date, Name, ShortDesc, FullDesc
FROM Project
LEFT JOIN ProjectLoc ON Project.ProjectID = ProjectLoc.ProjectID
WHERE ProjectLoc.Lang = %CurrentLang%
优点:优雅而简单缺点:大量表格我的选择是
Project
-------
ProjectID (PK)
Date
ProjectLoc
----------
ProjectID (FK)
Lang
Name
ShortDesc
FullDesc
然后可以运行一个简单的查询,如
SELECT Project.ProjectID, Date, Name, ShortDesc, FullDesc
FROM Project
LEFT JOIN ProjectLoc ON Project.ProjectID = ProjectLoc.ProjectID
WHERE ProjectLoc.Lang = %CurrentLang%
优点:优雅而简单缺点:在.net中有大量表我们使用的是由设计的sql本地化数据库 看
在.net中,我们使用的是由设计的sql本地化数据库 看
您也可以像这个用户一样研究使用XML:您也可以像这个用户一样研究使用XML:问题在于,如果表中有其他不可本地化的字段。然后,重复其他数据会导致维护问题。问题在于该表是否有其他不可本地化的字段。然后,您会重复其他数据,导致维护方面的麻烦。谢谢!我想