हमारी कंपनी में हमारे पास मौजूदा अनुवाद ms-sql टेबल wich स्टोर स्ट्रिंग्स इस तरह हैं:
Id | Key | Language | Value
1 | hello-world | nl-BE | Hallo Wereld
2 | hello-world | en-GB | Hello World
सिस्टम में 3 भाषाएं हैं और मुझे उम्मीद है कि यह भविष्य में अधिकतम 10 तक बढ़ जाएगी
इस तालिका को कई अलग-अलग परियोजनाओं (लगभग 60 परियोजनाओं, ज्यादातर वेबसाइटों / वेब एप्लिकेशन और कुछ वेब सेवाओं) द्वारा पढ़ा जाता है, जो प्रत्येक अनुवाद डेटाबेस के लिए एक डेटाबेस कनेक्शन खोलते हैं, अनुवाद को कैश करते हैं
फ्रंट-एंड देवों से प्रतिक्रिया यह है कि हमारे UIto इनपुट या अनुवाद का सबसे बड़ा नकारात्मक पक्ष यह है कि वे यह नहीं जान सकते हैं कि कौन सा प्रोजेक्ट इन स्ट्रिंग्स का उपयोग करता है।
वे कभी-कभी तारों को संशोधित करते हैं, यह नहीं जानते कि वे इसके साथ 7 परियोजनाओं को तोड़ रहे हैं।
अब उन्हें बस कुछ टाइप करना है this.Translate("Hello World")
और सिस्टम बाकी का ध्यान रखता है।
मैं उन्हें कुछ करने के लिए मजबूर कर सकता था, this.Translate("Hello World","AwesomeApplication1")
लेकिन ऐसा लगता है कि यह कई कई परियोजनाओं के लिए बहुत सारे refactoring की आवश्यकता है।
आप इस समाधान को कैसे प्रदान करेंगे? आप एक देव के रूप में, अनुवाद के लिए "प्रोजेक्ट नाम" कैसे प्रदान करेंगे? आप इसे डेटाबेस में कैसे संग्रहीत करेंगे?
महत्वपूर्ण नोट: अनुवाद फिर से उपयोग केंद्रीकृत डेटाबेस का पूरा बिंदु है, इसलिए किसी एक परियोजना में अनुवाद करना
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1
5|hello-world|nl-BE|Hallo Wereld!|MyAwesomeApplicatoin2
वास्तव में एक वांछित विकल्प नहीं है।
मैं कुछ पसंद करूँगा:
1|hello-world|nl-BE|Hallo Wereld|MyAwesomeApplicatoin1,MyAwesomeApplicatoin2
या तालिका में नाम डालने के बराबर एक विदेशी कुंजी।
अपडेट करें
डेटाबेस को सामान्य करने की सलाह के आधार पर मैं अब तक कुछ इस तरह से आया हूं:
//this allows me to distinquish if translations where added by developer or by translator
UPDATE2: पाठ के बजाय edmx जोड़ा गया। अगर लोग दिलचस्पी रखते हैं तो मैं WCF परियोजना को जीआईटीयूबी बना सकता हूं, इसलिए मैं इस अवधारणा को लपेट रहा हूं ताकि अन्य लोग इसका परीक्षण और उपयोग कर सकें।