Saya merekomendasikan jawaban yang diposting oleh Martin.
Tetapi Anda tampaknya khawatir bahwa pertanyaan Anda menjadi terlalu rumit:
Untuk membuat tabel terlokalisasi untuk setiap tabel membuat desain dan kueri ...
Jadi Anda mungkin berpikir, bahwa alih-alih menulis pertanyaan sederhana seperti ini:
SELECT price, name, description FROM Products WHERE price < 100
... Anda harus mulai menulis pertanyaan seperti itu:
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
Bukan perspektif yang sangat cantik.
Tetapi alih-alih melakukannya secara manual, Anda harus mengembangkan kelas akses basis data Anda sendiri, yang melakukan pra-parsing SQL yang berisi markup lokalisasi khusus Anda dan mengubahnya menjadi SQL aktual yang perlu Anda kirim ke database.
Menggunakan sistem itu mungkin terlihat seperti ini:
db.setLocale("en");
db.query("SELECT p.price, _(p.name), _(p.description)
FROM _(Products p) WHERE price < 100");
Dan saya yakin Anda bisa melakukan itu lebih baik lagi.
Kuncinya adalah membuat tabel dan bidang Anda dinamai secara seragam.