Di perusahaan kami, kami memiliki tabel terjemahan ms-sql yang sudah ada yang menyimpan string seperti ini:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
Ada 3 bahasa dalam sistem dan saya berharap ini tumbuh hingga maksimum sekitar 10 di masa depan
Tabel ini dibaca oleh beberapa proyek yang sangat berbeda (sekitar 60 proyek, sebagian besar situs web / aplikasi web dan beberapa layanan web), yang masing-masing membuka koneksi database ke database terjemahan, cache terjemahan
Umpan balik dari para pengembang front-end adalah bahwa UI kami untuk memasukkan atau memodifikasi kelemahan terbesar terjemahan adalah bahwa mereka tidak dapat mengetahui proyek apa yang menggunakan string apa.
Mereka terkadang memodifikasi string tanpa mengetahui bahwa mereka melanggar 7 proyek dengannya.
Sekarang mereka hanya perlu mengetikkan sesuatu seperti this.Translate("Hello World")
dan sistem menangani sisanya.
Saya tentu saja bisa memaksa mereka untuk sesuatu seperti this.Translate("Hello World","AwesomeApplication1")
tetapi sepertinya itu akan memerlukan cukup banyak refactoring di banyak banyak proyek.
Bagaimana Anda menyediakan solusi ini? Bagaimana Anda, sebagai seorang dev, memberikan "nama proyek" untuk terjemahan? Bagaimana Anda menyimpan ini di basis data?
Catatan penting: terjemahan yang digunakan kembali adalah inti dari database terpusat, jadi pelingkupan terjemahan untuk satu proyek dengan pergi
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
sebenarnya bukan opsi yang diinginkan.
Saya lebih suka sesuatu seperti:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
atau kunci asing yang setara dengan hanya meletakkan nama-nama di tabel.
MEMPERBARUI
Berdasarkan saran untuk menormalkan database saya telah menemukan sesuatu seperti ini sejauh ini:
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2: menambahkan edmx bukan teks. Jika orang tertarik saya bisa github proyek WCF saya membungkus konsep ini sehingga orang lain dapat menguji dan menggunakannya.