Dans notre entreprise, nous avons une table de traduction ms-sql existante qui stocke des chaînes comme celle-ci:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
Il y a 3 langues dans le système et je m'attends à ce que cela atteigne un maximum d'environ 10 à l'avenir
Ce tableau est lu par plusieurs projets très différents (environ 60 projets, principalement des sites Web / applications Web et certains services Web), qui ouvrent chacun une connexion à la base de données de traduction, mettent en cache les traductions
Les commentaires des développeurs frontaux sont que notre interface utilisateur pour saisir ou modifier le plus gros inconvénient des traductions est qu'ils ne peuvent pas savoir quel projet utilise quelles chaînes.
Ils modifient parfois des chaînes sans savoir qu'ils cassent 7 projets avec.
Maintenant, il leur suffit de taper quelque chose comme this.Translate("Hello World")
et le système s'occupe du reste.
Je pourrais bien sûr les forcer à quelque chose comme, this.Translate("Hello World","AwesomeApplication1")
mais cela semble nécessiter beaucoup de refactoring à travers les nombreux projets.
Comment feriez-vous pour fournir cette solution? Comment, en tant que développeur, fourniriez-vous le "nom du projet" à la traduction? Comment stockeriez-vous cela dans la base de données?
Remarque importante: la réutilisation de la traduction est tout l'intérêt de la base de données centralisée, donc délimiter les traductions vers un projet en allant
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
n'est pas vraiment une option recherchée.
Je préfère quelque chose comme:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
ou un équivalent de clé étrangère de simplement mettre les noms dans la table.
MISE À JOUR
Sur la base du conseil de normaliser la base de données, j'ai trouvé quelque chose comme ceci jusqu'à présent:
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2: ajout d'edmx au lieu du texte. Si les gens sont intéressés, je pourrais utiliser le projet WCF dans lequel j'enveloppe ce concept pour que d'autres personnes puissent le tester et l'utiliser.