मैं मार्टिन द्वारा पोस्ट किए गए उत्तर की सिफारिश करता हूं।
लेकिन आपको लगता है कि आपके प्रश्न बहुत जटिल हो रहे हैं:
प्रत्येक तालिका के लिए स्थानीयकृत तालिका बनाने के लिए डिज़ाइन और क्वेरी को जटिल बना रहा है ...
तो आप सोच रहे होंगे कि इस तरह सरल प्रश्न लिखने के बजाय:
SELECT price, name, description FROM Products WHERE price < 100
... आपको इस तरह प्रश्न लिखना शुरू करना होगा:
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
बहुत सुंदर परिप्रेक्ष्य नहीं।
लेकिन इसे मैन्युअल रूप से करने के बजाय आपको अपने स्वयं के डेटाबेस एक्सेस क्लास को विकसित करना चाहिए, जो कि SQL को आपके विशेष स्थानीयकरण मार्कअप में शामिल करता है और इसे वास्तविक SQL में कनवर्ट करता है, जिसे आपको डेटाबेस को भेजने की आवश्यकता होगी।
उस प्रणाली का उपयोग करना कुछ इस तरह दिख सकता है:
db.setLocale("en");
db.query("SELECT p.price, _(p.name), _(p.description)
FROM _(Products p) WHERE price < 100");
और मुझे यकीन है कि आप इससे भी बेहतर कर सकते हैं।
कुंजी आपके टेबल और फ़ील्ड को समान रूप से नामित करने के लिए है।