Nella nostra azienda esiste una tabella ms-sql di traduzione esistente che memorizza stringhe come questa:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
Ci sono 3 lingue nel sistema e mi aspetto che cresca fino a un massimo di circa 10 in futuro
Questa tabella viene letta da più progetti molto diversi (circa 60 progetti, principalmente siti Web / applicazioni Web e alcuni servizi Web), che ciascuno apre una connessione al database di traduzione, memorizza nella cache le traduzioni
Il feedback degli sviluppatori front-end è che la nostra interfaccia utente per inserire o modificare il principale svantaggio delle traduzioni è che non possono sapere quale progetto utilizza quali stringhe.
A volte modificano le stringhe non sapendo che stanno rompendo 7 progetti con esso.
Ora devono solo digitare qualcosa di simile this.Translate("Hello World")
e il sistema si occupa di tutto il resto.
Potrei ovviamente costringerli a qualcosa del genere, this.Translate("Hello World","AwesomeApplication1")
ma sembra che ci vorrà un sacco di refactoring in molti molti progetti.
Come vorresti fornire questa soluzione? Come forniresti il "nome del progetto" alla traduzione come sviluppatore? Come lo memorizzereste nel database?
Nota importante: il riutilizzo della traduzione è il punto centrale del database centralizzato, quindi andando a cercare le traduzioni in un progetto
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
non è davvero un'opzione desiderata.
Preferirei qualcosa del tipo:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
o una chiave esterna equivalente al solo mettere i nomi nella tabella.
AGGIORNARE
Sulla base del consiglio di normalizzare il database, ho trovato qualcosa di simile finora:
//this allows me to distinquish if translations where added by developer or by translator
AGGIORNAMENTO2: aggiunto edmx invece del testo. Se le persone sono interessate, potrei cercare il progetto WCF, sto avvolgendo questo concetto in modo che altre persone possano testarlo e usarlo.