查找表本地化

时间:2014-09-11 13:35:27

标签: sql sql-server

在我使用本地化的项目中,我有以下表格:

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等其他查找表一样......

或者我应该只在应用程序中本地化查找表吗?

更新

澄清:

  1. 一个帖子的所有本地化版本都具有相同的PostType。

  2. 我需要在UI中显示PostTypes,这就是我需要翻译它们的原因。

  3. 所以我按照@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

    但我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

答案取决于Name表的PostTypes字段的用法:

  • 如果该字段的所有使用都来自您可能拥有的代码和/或不可本地化的脚本,则无需进行本地化
  • 如果Name进入最终用户的视图,则应该对表进行本地化。

如果您需要本地化PostTypes,除了具有区域设置无关名称的PostTypesLocalized表之外,还有一个单独的PostTypes表,听起来像是一个合适的解决方案。

您也应该考虑PostTypeId字段的位置。具有相同PostId的所有本地化是否会引用相同的PostTypeId,或者其中一些是不同的?如果同一Post的所有本地化都引用相同的PostType,则该字段应属于Posts表,而不是PostLocalized

  

我应该只在应用程序中本地化查找表吗?

向数据库添加本地化计为应用程序的本地化。当您考虑使用相同数据库结构的多个应用程序时,这是一个很好的解决方案。