जिस तरह से मैं वर्तमान में अनुप्रयोगों में बहु भाषा समर्थन लागू कर रहा हूं, निम्न विधि के माध्यम से है।
- भाषा नामक एक अमूर्त कक्षा बनाएं जो सभी भाषाओं से प्राप्त होती है।
- अनुवाद की आवश्यकता वाले प्रत्येक पाठ स्ट्रिंग के लिए सार स्ट्रिंग गुण जोड़ें।
- आधार भाषा वर्ग से प्राप्त प्रत्येक भाषा केवल स्ट्रिंग के स्थानीय संस्करण को वापस कर देती है।
- वर्तमान में चुनी गई भाषा कक्षा को स्टोर करने के लिए वैश्विक संपत्ति बनाएं।
- स्ट्रिंग मान प्राप्त करें जिन्हें स्थानीय रूप से सेट करने की बजाय वैश्विक संपत्ति से अनुवाद करने की आवश्यकता है।
हालांकि अनुवादित तार जोड़ना कठिन है, मुझे यह विधि मिलती है कि यूआई कोड को यथासंभव सरल रखने के दौरान सभी आवश्यक भागों का अनुवाद किया जाता है।
बेस क्लास का उपयोग किसी भी विधि या गुणों का पुनः उपयोग करने की अनुमति देता है जो सभी भाषाओं में उपयोग किया जा सकता है।
बुनियादी रूपरेखा देने और देने के लिए संरचना इस तरह जाएगी।
// बेस भाषा कक्षा
public abstract class Language
{
// Field to identify the language by.
public string Code {get; private set;}
// Contructor that takes language code as parameter
public Language(string code)
{
Code = code;
}
// Add the strings you want translating.
// Making them abstract means classes that inherit from
// this class must provide their own implementation of these strings.
public abstract string Hello {get;}
public abstract string Goodbye {get;}
}
// उदाहरण अंग्रेजी भाषा वर्ग
public class en_gb : Language
{
// Constructor simply provides base class with the language code.
public en_gb() : base ("en_gb"){}
// By inheriting from Language these properties must be overridden.
// Visual Studio will add these properties for you, so you simply need to add the return value.
public override string Hello {get {return "Hello";} }
public override string Goodbye {get {return "Goodbye";} }
}
// उदाहरण स्पेनिश भाषा वर्ग
public class es_sp : Language
{
// Constructor simply provides base class with the language code.
public es_sp() : base ("es_sp"){}
// By inheriting from Language these properties must be overridden.
// Visual Studio will add these properties for you, so you simply need to add the return value.
public override string Hello {get {return "Hola";} }
public override string Goodbye {get {return "Adiós";} }
}
आप तो बस एक वैश्विक संपत्ति कहीं ।
public Language CurrrentLanguage {get; set;}
सभी तत्वों को अनुवाद करने की आवश्यकता है तो CurrrentLanguage संपत्ति संदर्भ वांछित स्ट्रिंग वापस जाने के लिए कर सकते हैं।
XAML उदाहरण:
<TextBlock Text="{Binding Source={StaticResource GlobalValues}, Path=CurrrentLanguage.Hello}" />
कोड उदाहरण:
Textbox1.Text = GlobalValues.CurrentLanguage.Hello;
क्या यह एमवीसी एप्लीकेशन –
यह एक एएसपी वेब एप्लिकेशन है। – Veer
यह आंशिक रूप से इस बात पर निर्भर करता है कि आप किस भाषा के लिए अनुवाद बनाना चाहते हैं। जैसे ही भाषा एलटीआर से आरटीएफ में बदल जाती है, एक मानक लेआउट (सभी भाषाओं के लिए) हमेशा अंतिम उपयोगकर्ता को समझ में नहीं आता है। इसके अलावा कुछ भाषाएं सीधे अनुवाद नहीं करती हैं (या समझ में आती हैं)। – Will