Ben şimdi çok küçük bir CMS dilli gerektiğini tasarlama.
Bana mosts kaygılar, müşteri kendiliğinden bir dil eklemek veya kaldırmak için karar olabilir özelliklerinden biri.
Bu nedenle, ben tablo adlarını değiştirebilir veya dinamik adlarını kullanarak onlara erişmek için Yapamam (ve istiyorum), veritabanı tabloları son ekleri ekleyerek tasarımını amaçlayan, ne de bir dil tanımlanmış veya kaldırıldığında her zaman ekleyerek veya alanları kaldırarak değilim .
Ben veritabanları gibi ve onlar mantain kolay çünkü sadece ben ya, dosyaları kullanmak olmaz.
Ve son olarak, çeviri iki tip düşünüyorum:
- Web metin.
- İçerik metni.
Bu nedenle, benim tasarım amaçlamaktadır:
- Tanımlı dilleri ile languajes bir tablo.
- translations A single table that will have all the messages, as follows:
- [Pk] içerik tercüme edilecek tablonun table_name isim.
- [Pk] içerik tercüme edilecek alanın field_name isim.
- [Pk] tercüme edilecek öğe için row_id satır tanımlayıcıyla.
- [Pk] metin tercüme edilmiştir ki language dili.
- text çevrilmiş metin.
Yani her zaman çeviriler tablosunda olacak çünkü alanları tek dil senaryoda içeriğe sahip olacak tablolar, şimdi onun içeriği geçersiz olacağı anlamına gelir.
Yani sql querys karmaşıklığı artacak, ama bana kolay bir şekilde çeviriler korumak için araçlarını geliştirmelerine olanak sağlamaktadır. Çözüm uygulanması sadece zaman da, sql karmaşıklığı, sadece bir kez var olacak. Bu uygulama düzgün tasarlanmış ise, sitenin bakım / uzamayı önemli bir sorun olmak zorunda değildir.
Edit:
Geliştirici arkadaşları ile bazı konuşmadan sonra, ben burada aproaching am çözümü tek bir tabloda çok fazla ücret olduğunu düşünüyorum.
Ben aşağıdaki gibi artık çalışma olacak diğer bir yaklaşım, her bir "çevrilebilir tablonun" için ekstra bir tablo yaratıyor:
- any_translatable_table: alanlarından herhangi birini çevirmek için gereken tablo
- any_translatable_table_translations: The table where the translations will be stored.
- [Pk] içerik tercüme edilecek alanın field_name isim.
- [Pk] tercüme edilecek öğe için row_id satır tanımlayıcıyla.
- [Pk] metin tercüme edilmiştir ki language dili.
- text çevrilmiş metin.
Bu düzen ilk birinden kavramları devralır, ancak bu tablolar başına içeriğin ayırır. Bu alternatif çözüm performansını arttırmak ve (indeksleri problemleri gibi) sorunları izole edebilir.
"Çevrilebilir tabloda" başına ekstra çeviri tablo aynı zamanda özgün bir o yaratılacaktır.
Ve sql querys hakkında, karmaşıklığı hala aynı: İlk yaklaşım çeviriler tabloya aramak için tablo adını gerekiyor, ancak ikinci sadece tablo adı da eki "_Çeviri" ekler.