我正在寻找有关本地化存储在数据库中的数据的最佳实践的建议。我正在开发一个Web应用程序,其中所有静态文本都使用文件进行本地化。管理员可以使用UI配置多个选项,这些选项存储在数据库中,需要对这些值进行本地化。
我们提出了几个可能的想法。您对这些解决方案有何看法?是否有更好的选择,甚至是标准的最佳实践?
每场专业化本地化
这是为best practices for multilanguage database design提出的解决方案。我们将为每个本地化字段创建一个单独的表。例如,假设我们的表colors
包含color_id
,color_name
和color_description
列,我们可能会将其分解为color
表本地化数据和color_translations
表color_id
,locale
,color_name
和color_description
字段。
但是,我们的客户经常将本地化文件发送给第三方进行翻译,这变得很棘手。
单表本地化
另一种选择是创建一个表来表示所有数据库本地化:
CREATE TABLE localized_text
(
key VARCHAR(256) NOT NULL,
locale CHAR(5) NOT NULL,
value VARCHAR(256),
PRIMARY KEY (key, locale)
);
这样可以更容易地导出非现场本地化,但增加了一定程度的间接。
答案 0 :(得分:1)
我们将为每个本地化字段创建一个单独的表。例如,假设我们的表格颜色为
color_id
,color_name
和color_description
列....
假设您的colors
表只是 静态文本,显而易见的选择是向其添加一列,可能名为locale
,并为您关心的每个区域设置添加行。然后加入客户的区域设置以生成所需的单个描述。
为此,您必须将静态描述与与语言环境无关的数据分开,因为本地化描述会引入多对一关系。作为权宜之计,您可以将英文描述保留在主表中,并在所有对它们的引用都消失后删除它们。