मुझे लगता है कि आप बड़ी परियोजनाओं के लिए इसे अधिक उपयुक्त बनाने के लिए .NET द्वारा प्रदान किए गए संसाधन ढांचे पर भारी भरोसा कर सकते हैं, अर्थात् आवेदन के स्वतंत्र रूप से संसाधनों का निर्माण और रखरखाव करना और उत्पन्न गुणों को समाप्त करना नाम से प्रत्येक संसाधन। यदि बड़े परियोजना स्थानीयकरण के लिए अन्य लक्ष्य उपयुक्त हैं जो नीचे संबोधित नहीं हैं, तो कृपया उनका वर्णन करें ताकि मैं उन्हें भी विचार कर सकूं।
- अपने संसाधनों का प्रतिनिधित्व करने के लिए एक स्टैंडअलोन परियोजना बनाएं जो एक अलग डीएलएल के रूप में लोड किया जा सकता है।
- प्रोजेक्ट गुणों के संसाधन टैब पर लिंक का चयन करके अपनी परियोजना में "संसाधन" फ़ाइल जोड़ें: "इस प्रोजेक्ट में डिफ़ॉल्ट संसाधन फ़ाइल नहीं है। एक बनाने के लिए यहां क्लिक करें।"
- किसी अन्य भाषा का प्रतिनिधित्व करने के लिए एक ही रूट नाम के साथ एक और संसाधन जोड़ें, उदाहरण के लिए जर्मन के लिए "Resource.de.resx"। (विज़ुअल स्टूडियो स्पष्ट रूप से फ़ाइल नाम का प्रतिनिधित्व करने वाली भाषा निर्धारित करने के लिए फ़ाइल नाम का उपयोग करता है)। इसे डिफ़ॉल्ट संसाधन फ़ाइल के रूप में उसी निर्देशिका/फ़ोल्डर में ले जाएं। (प्रत्येक भाषा के लिए दोहराएं।)
- Resources.resx फ़ाइल के गुणों में, कस्टम टूल प्रॉपर्टी से "ResXFileCodeGenerator" को हटाएं ताकि एप्लिकेशन के "गुण" नामस्थान में डिफ़ॉल्ट कोड जनरेशन को रोका जा सके। (हर भाषा के लिए दोहराएँ।)
स्पष्ट/मैन्युअल रूप से अपने स्वयं के संसाधन प्रबंधक इस तरह एक लाइन के साथ नव निर्मित संसाधनों को लोड करता है की घोषणा:
स्थिर System.Resources.ResourceManager resourceMan = नई सिस्टम.संसाधन। संसाधन प्रबंधक ( "LocalizeDemo.Properties.Resources", टाइपऑफ (संसाधन) .Assembly);
उत्पन्न किया जा सकता है कि कि सभी संसाधनों आप उल्लेख कर सकते हैं की एक सूची है एक फ़ाइल को लागू करें (चित्रा 1 देखें)
पुनः प्राप्त करने के एक समारोह और प्रारूप तार (आंकड़ा 2 देखें) को लागू करें।
अब आपके पास पर्याप्त है कि आप किसी भी अनुप्रयोग से अनुवादित तारों का संदर्भ ले सकते हैं (चित्र 3 देखें)।
सिस्टम का उपयोग करें। स्रोत। ResXResourceWriter (System.Windows.Forms.dll से) या System.Resources.ResourceWriter (System.dll) Resx फ़ाइलों को आपके प्राथमिक स्रोत होने के बजाय संसाधन उत्पन्न करने के लिए। हमारी प्रोजेक्ट में, हमारे पास एक SQL डेटाबेस है जो प्रत्येक भाषा में हमारे सभी स्ट्रिंग को परिभाषित करता है और हमारी बिल्ड प्रक्रिया का हिस्सा संसाधन प्रोजेक्ट बनाने से पहले सभी रेज़िक्स फ़ाइलों को उत्पन्न करता है।
अब जब आप किसी भी प्रारूप से अपनी रेक्स फाइलें जेनरेट कर सकते हैं, तो आप किसी भी प्रारूप का उपयोग कर सकते हैं (हमारे मामले में एक SQL डेटाबेस, जिसे हम एक्सेल स्प्रेडशीट से निर्यात और आयात करते हैं) अनुवादकों को भेजने के लिए फाइलें प्रदान करने के लिए ।
यह भी ध्यान दें कि अनुवादित संसाधन सैटेलाइट डीएलएल के रूप में निर्माण कर रहे हैं। आप सही कमांड लाइन टूल्स के साथ स्वतंत्र रूप से प्रत्येक भाषा का निर्माण कर सकते हैं। यदि वह आपके प्रश्न का हिस्सा है (यह कैसे करें) मुझे बताएं। लेकिन इस पल के लिए, मुझे लगता है कि आप इसके बारे में जानते हैं क्योंकि आपने पहले से ही कस्टम बिल्ड चरणों का उल्लेख किया है।
चित्रा 1 - enum की पहचान सभी उपलब्ध संसाधनों:
namespace MyResources
{
public enum StrId
{
Street
....
}
}
चित्र 2 - कोड लोड और स्वरूपित संसाधन तार वापस जाने के लिए:
namespace MyResources
{
public class Resources
{
static System.Resources.ResourceManager resourceMan =
new System.Resources.ResourceManager("MyResources.Properties.Resources",
typeof(Resources).Assembly);
public static string GetString(StrId name,
System.Globalization.CultureInfo culture = null, params string[] substitutions)
{
if (culture == null) culture = System.Threading.Thread.CurrentThread.CurrentUICulture;
string format = resourceMan.GetString(name.ToString(), culture);
if (format != null)
{
return string.Format(format, substitutions);
}
return name.ToString();
}
}
}
चित्रा 3 - तक पहुँचने संसाधन:
using MyResources;
namespace LocalizationDemo
{
class Program
{
static void Main(string[] args)
{
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo("de-DE");
Console.WriteLine(Resources.GetString(StrId.Street));
}
}
}
@Kon यह एक डुप्लिकेट नहीं है, बी पारिस्थितिकी मैंने प्रत्येक प्रश्न देखा है जो 'सी # स्थानीयकरण' से संबंधित है। और लोग स्थानीय निर्माण को और अधिक आरामदायक बनाने के लिए उपयोग किए जाने वाले कस्टम बिल्ड चरणों और साफ-सुथरे कार्यों का उपयोग करने के बारे में बात करते हैं। हालांकि, वे केवल उनका उल्लेख करते हैं और मैं एक पूरा जवाब देखना चाहता हूं। –
निश्चित रूप से, आपको वास्तव में अंतर्राष्ट्रीयकरण की आवश्यकता है (आपको पहले अपना आवेदन तैयार करने की आवश्यकता है)। जैसा कि आप कल्पना कर सकते हैं कि इसका उत्तर दिया गया है [http://stackoverflow.com/questions/5253614/effective-strategies-for-localization-in-net/5524981#55249810) ... –
क्षमा करें, मुझे कुछ गलत समझना होगा ... कृपया मेरी पिछली टिप्पणी को नजरअंदाज करें। –