在我使用本地化的项目中,我有以下表格:
create table dbo.Posts
(
Id int identity not null primary key clustered (Id),
Created datetime not null,
);
create table dbo.PostsLocalized
(
Id int identity not null primary key clustered (Id),
PostId int not null,
LanguageId int not null,
PostTypeId int not null,
[Text] nvarchar (max) not null,
Title nvarchar (120) not null,
constraint UQ_PostsLocalized_PostId_LanguageId unique (PostId, LanguageId)
);
create table dbo.PostTypes
(
Id int identity not null primary key clustered (Id),
Name nvarchar (max) not null
);
所以我使用PostsLocalized表本地化帖子,但不是PostTypes表。
PostTypes表基本上是我的数据库中的其他查找表。
您认为我应该本地化查找表,例如PostTypes吗?
我会添加一个名为PostTypesLocalized的新表,其中包含本地化名称。
对于像Genders,Countries等其他查找表一样......
或者我应该只在应用程序中本地化查找表吗?
更新
澄清:
一个帖子的所有本地化版本都具有相同的PostType。
我需要在UI中显示PostTypes,这就是我需要翻译它们的原因。
所以我按照@dasblinkenlight的回答尝试了一种新方法:
create table dbo.Posts
(
Id int identity not null primary key clustered (Id), -- The id of the localized post
Created datetime not null,
PostId int not null, -- The id of the post
PostTypeId int not null
LanguageId int not null,
[Text] nvarchar (max) not null,
Title nvarchar (120) not null,
constraint UQ_PostsLocalized_PostId_LanguageId unique (PostId, LanguageId)
);
create table dbo.PostTypes
(
Id int identity not null primary key clustered (Id), -- PostType localized id
PostTypeId int not null, -- The id of the post type
Name nvarchar (max) not null
);
考虑(1)然后帖子> PostTypeId应该与PostTypes>相关。 PostTypeId
但我怎么能这样做?
答案 0 :(得分:1)
答案取决于Name
表的PostTypes
字段的用法:
Name
进入最终用户的视图,则应该对表进行本地化。如果您需要本地化PostTypes
,除了具有区域设置无关名称的PostTypesLocalized
表之外,还有一个单独的PostTypes
表,听起来像是一个合适的解决方案。
您也应该考虑PostTypeId
字段的位置。具有相同PostId
的所有本地化是否会引用相同的PostTypeId
,或者其中一些是不同的?如果同一Post
的所有本地化都引用相同的PostType
,则该字段应属于Posts
表,而不是PostLocalized
。
我应该只在应用程序中本地化查找表吗?
向数据库添加本地化计为应用程序的本地化。当您考虑使用相同数据库结构的多个应用程序时,这是一个很好的解决方案。