Lookup-Tabellen Lokalisierung

Bei einem Projekt, wo ich die Lokalisierung verwende, habe ich folgende Tabellen:

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 ); 

Also lokalisiere ich die Posts mit einer PostsLocalized Tabelle aber nicht die PostTypes Tabelle.

Die PostTypes-Tabelle ist grundsätzlich eine Nachschlagtabelle, wie andere ich in meiner database habe.

Glaubst du, ich sollte die Lookup-Tabellen lokalisieren, zB PostTypes?

Ich würde einen neuen Tisch namens PostTypesLocalized mit den lokalisierten Namen hinzufügen.

Das gleiche für andere Nachschlagtabellen wie Geschlechter, Länder, …

Oder sollte ich die Lookup-Tabellen nur in der Anwendung lokalisieren?

AKTUALISIEREN

Um klarzustellen:

  1. Alle lokalisierten Versionen eines Beitrags haben denselben PostType.

  2. Ich muss die PostTypes in der Benutzeroberfläche anzeigen, deshalb muss ich sie übreplace.

Also habe ich einen neuen Ansatz nach der Antwort von @dasblinkenlight probiert:

 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 ); 

Betrachten (1) dann Beiträge> PostTypeId sollte mit PostTypes> PostTypeId verwandt sein.

Aber wie kann ich das machen?

Die Antwort hängt von der Verwendung des PostTypes der PostTypes Tabelle ab:

  • Wenn alle Verwendungen dieses Feldes aus Code und / oder nicht-lokalisierbaren Skripten kommen, die Sie haben können, ist eine Lokalisierung nicht erforderlich
  • Wenn der Name es zur view des Endbenutzers macht, sollten Sie die Tabelle lokalisieren.

Wenn Sie PostTypes lokalisieren PostTypes , PostTypes eine separate PostTypesLocalized Tabelle zusätzlich zu der PostTypes Tabelle mit locale-unabhängigem Namen wie eine entsprechende Lösung.

Sie sollten auch die Platzierung des PostTypeId Feldes PostTypeId . Würden alle Lokalisierungen mit demselben PostId auf denselben PostId verweisen, oder wären einige von ihnen anders? Falls alle Lokalisierungen derselben Post sich auf denselben PostType beziehen, sollte das Feld der Posts Tabelle statt PostLocalized .

Soll ich die Lookup-Tabellen nur in der Applikation lokalisieren?

Das Hinzufügen von Lokalisierung zu Ihrer database zählt als Lokalisierung Ihrer Anwendung. Es ist eine gute Lösung, wenn man mehrere Anwendungen mit der gleichen databasestruktur betrachtet.