Martin tarafından gönderilen cevabı öneriyorum.
Ancak, sorgularınızın çok karmaşık hale gelmesinden endişe duyuyorsunuz:
Her tablo için yerelleştirilmiş tablo oluşturmak için tasarım ve sorgulama karmaşık hale getiriyor ...
Yani şöyle düşünebilirsiniz, bunun gibi basit sorgular yazmak yerine:
SELECT price, name, description FROM Products WHERE price < 100
... böyle sorguları yazmaya başlamanız gerekir:
SELECT
p.price, pt.name, pt.description
FROM
Products p JOIN ProductTranslations pt
ON (p.id = pt.id AND pt.lang = "en")
WHERE
price < 100
Çok hoş bir bakış açısı değil.
Ancak manuel olarak yapmak yerine, özel yerelleştirme işaretlemenizi içeren SQL'i önceden ayrıştıran ve veritabanına göndermeniz gereken gerçek SQL'e dönüştüren kendi veritabanı erişim sınıfınızı geliştirmelisiniz.
Bu sistemi kullanmak şöyle görünebilir:
db.setLocale("en");
db.query("SELECT p.price, _(p.name), _(p.description)
FROM _(Products p) WHERE price < 100");
Ve bundan daha iyisini yapabileceğine eminim.
Anahtar tablo ve alan adlarını aynı şekilde adlandırmaktır.