C# (.NET) में अंतर्राष्ट्रीयकरण (i18n): एक संपूर्ण मार्गदर्शिका
अंतर्राष्ट्रीयकरण (अक्सर संक्षेप में i18n — अंग्रेजी के "internationalization" से, जहां पहले अक्षर 'i' और अंतिम अक्षर 'n' के बीच 18 अक्षर हैं) सॉफ्टवेयर को इस प्रकार डिजाइन करने की प्रक्रिया है कि इसे स्रोत कोड में बदलाव किए बिना विभिन्न भाषाओं और क्षेत्रीय मानकों के अनुकूल आसानी से ढाला जा सके। C# (.NET) इकोसिस्टम में, अंतर्राष्ट्रीयकरण एक अंतर्निहित और शक्तिशाली सुविधा है, जो डेवलपर्स को वास्तव में बहुभाषी एप्लिकेशन बनाने की अनुमति देती है।
इस लेख में, हम विस्तार से देखेंगे कि .NET (जिसमें .NET Core, .NET 5/6/7/8 और .NET Framework शामिल हैं) में i18n को कैसे लागू किया जाए। आप प्रमुख अवधारणाओं — संस्कृतियों, संसाधन फ़ाइलों (RESX), स्ट्रिंग्स, इमेज के स्थानीयकरण और डेटा फ़ॉर्मेटिंग के बारे में जानेंगे।
मुख्य अवधारणाएँ
कोड पर जाने से पहले, दो प्रमुख शब्दों को समझना महत्वपूर्ण है:
- वैश्वीकरण (Globalization): एप्लिकेशन को डिजाइन करने की प्रक्रिया जो विभिन्न संस्कृतियों के उपयोगकर्ताओं के लिए स्थानीयकृत इंटरफेस और क्षेत्रीय डेटा का समर्थन करती है। .NET में, यह
CultureInfoऔरRegionInfoक्लासेस के माध्यम से प्राप्त किया जाता है। - स्थानीयकरण (Localization): पहले से वैश्वीकृत एप्लिकेशन को किसी विशिष्ट भाषा/क्षेत्र के लिए अनुकूलित करने की प्रक्रिया (उदाहरण के लिए, टेक्स्ट का अनुवाद, दिनांक और मुद्रा प्रारूपों का समायोजन)।
.NET संस्कृतियों (Cultures) का उपयोग करता है, जो भाषा-क्षेत्र प्रारूप में निर्दिष्ट की जाती हैं (उदाहरण के लिए, ru-RU — रूसी (रूस), en-US — अंग्रेजी (यूएसए), de-DE — जर्मन (जर्मनी))।
चरण 1: संसाधन फ़ाइलें (.resx) बनाना
.NET में स्थानीयकृत स्ट्रिंग्स को संग्रहीत करने का मुख्य तरीका संसाधन फ़ाइलें (.resx) हैं। ये XML फ़ाइलें होती हैं जो असेंबली में संकलित हो जाती हैं।
एक उदाहरण पर विचार करें। आइए रूसी और अंग्रेजी भाषाओं के लिए फ़ाइलें बनाएँ:
- Resources.resx — डिफ़ॉल्ट संसाधन फ़ाइल (आमतौर पर अंग्रेजी में)।
- Resources.ru.resx — रूसी भाषा के लिए फ़ाइल।
- Resources.de.resx — जर्मन भाषा के लिए फ़ाइल।
प्रत्येक फ़ाइल के अंदर, हम समान नामों लेकिन अलग-अलग मानों वाले स्ट्रिंग संसाधन जोड़ेंगे:
Resources.resx (डिफ़ॉल्ट भाषा — en-US):
Name: GreetingValue: Hello, World!
Name: WelcomeMessageValue: Welcome to our application!Resources.ru.resx (रूसी):
Name: GreetingValue: Привет, мир!
Name: WelcomeMessageValue: Добро пожаловать в наше приложение!चरण 2: C# कोड में संसाधनों तक पहुँच
.NET स्वचालित रूप से संसाधनों तक पहुँचने के लिए एक सख्ती से टाइप की गई क्लास जनरेट करता है। मान लें कि फ़ाइलें प्रोजेक्ट के Resources फ़ोल्डर में हैं। तब पहुँच इस प्रकार दिखेगी:
using System;using System.Globalization;using System.Threading;
class Program{ static void Main(string[] args) { // वर्तमान थ्रेड के लिए संस्कृति सेट करें Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU"); Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");
// स्थानीयकृत स्ट्रिंग्स प्राप्त करें string greeting = Resources.Messages.Greeting; string welcome = Resources.Messages.WelcomeMessage;
Console.WriteLine(greeting); // आउटपुट: Привет, мир! Console.WriteLine(welcome); // आउटपुट: Добро пожаловать в наше приложение! }}ध्यान दें: Resources.Messages एक स्वचालित रूप से जनरेट की गई क्लास है, जो आपकी RESX फ़ाइल के नाम पर आधारित है (यदि फ़ाइल का नाम Messages.resx है)।
चरण 3: ASP.NET Core में स्थानीयकरण
ASP.NET Core वेब एप्लिकेशन में, प्रक्रिया