Şirketimizde şu gibi dizeleri saklayan mevcut bir çeviri ms-sql tablosu var:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
Sistemde 3 dil var ve bunun gelecekte maksimum 10'a çıkmasını bekliyorum
Bu tablo, her biri çeviri veritabanına bir veritabanı bağlantısı açan, çevirileri önbelleğe alan çok sayıda farklı proje (çoğunlukla web siteleri / web uygulamaları ve bazı web hizmetleri) tarafından okunur.
Ön uç geliştiricilerden gelen geri bildirimler, çevirimizin en büyük dezavantajını UIto'ya girmek veya değiştirmek, hangi projenin hangi dizeleri kullandığını bilememesidir.
Bazen 7 projeyi bozduğunu bilmeden dizeleri değiştirirler.
Şimdi sadece böyle bir şey yazmak zorundalar this.Translate("Hello World")
ve sistem gerisini halleder.
Elbette onları böyle bir şeye zorlayabilirdim, this.Translate("Hello World","AwesomeApplication1")
ancak bu birçok proje arasında oldukça fazla yeniden düzenleme gerektirecek gibi görünüyor.
Bu çözümü nasıl sağlıyorsunuz? Bir geliştirici olarak çeviriye "proje adı" nı nasıl sağlarsınız? Bunu veritabanında nasıl saklarsınız?
Önemli not: çeviri yeniden kullanımı merkezi veritabanının bütün noktasıdır, bu yüzden bir projeye çevirileri gidip
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
gerçekten aranan bir seçenek değil.
Şöyle bir şey tercih ederim:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
ya da isimleri masaya koymanın bir yabancı anahtar karşılığı.
GÜNCELLEME
Veritabanı normalleştirmek için tavsiye dayanarak ben şimdiye kadar böyle bir şey ile geldim:
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2: metin yerine edmx eklendi. Eğer insanlar ilgileniyorsa ben WCF projesini github olabilir diğer insanlar test ve kullanmak böylece bu kavram sarıyorum.