In unserem Unternehmen haben wir eine vorhandene MS-SQL-Übersetzungstabelle, in der folgende Zeichenfolgen gespeichert sind:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
Es gibt 3 Sprachen im System und ich gehe davon aus, dass dies in Zukunft auf maximal 10 Sprachen anwachsen wird
Diese Tabelle wird von mehreren sehr unterschiedlichen Projekten gelesen (etwa 60 Projekte, hauptsächlich Websites / Webanwendungen und einige Webdienste), die jeweils eine Datenbankverbindung zur Übersetzungsdatenbank öffnen und die Übersetzungen zwischenspeichern
Das Feedback der Front-End-Entwickler lautet, dass unsere Benutzeroberfläche zum Eingeben oder Ändern von Übersetzungen den größten Nachteil hat, dass sie nicht wissen können, welches Projekt welche Zeichenfolgen verwendet.
Manchmal ändern sie Zeichenfolgen, ohne zu wissen, dass sie damit 7 Projekte brechen.
Jetzt müssen sie nur noch so etwas eingeben this.Translate("Hello World")
und das System kümmert sich um den Rest.
Ich könnte sie natürlich zu so etwas zwingen, this.Translate("Hello World","AwesomeApplication1")
aber das scheint ziemlich viel Umgestaltung in den vielen, vielen Projekten zu erfordern.
Wie würden Sie diese Lösung bereitstellen? Wie würden Sie als Entwickler den "Projektnamen" für die Übersetzung angeben? Wie würden Sie dies in der Datenbank speichern?
Wichtiger Hinweis: Die Wiederverwendung von Übersetzungen ist der springende Punkt der zentralisierten Datenbank
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
ist nicht wirklich eine erwünschte Option.
Ich würde so etwas bevorzugen wie:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
oder ein Fremdschlüsseläquivalent zum einfachen Einfügen der Namen in die Tabelle.
AKTUALISIEREN
Aufgrund des Ratschlags zur Normalisierung der Datenbank habe ich mir bisher Folgendes ausgedacht:
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2: edmx anstelle von Text hinzugefügt. Wenn Leute interessiert sind, könnte ich das WCF-Projekt unterbinden, in das ich dieses Konzept einpacke, damit andere Leute es testen und verwenden können.