C# (.NET) में अंतर्राष्ट्रीयकरण (i18n)
अंतर्राष्ट्रीयकरण (i18n - "internationalization" का संक्षिप्त रूप, जहाँ 18 पहले 'i' और अंतिम 'n' के बीच के अक्षरों की संख्या है) सॉफ़्टवेयर को इस तरह डिज़ाइन करने की प्रक्रिया है कि उसे बिना सोर्स कोड बदले विभिन्न भाषाओं, क्षेत्रों और सांस्कृतिक विशेषताओं के अनुकूल बनाया जा सके। .NET (C#) प्लेटफ़ॉर्म में, i18n को लोकलाइज़ेशन और ग्लोबलाइज़ेशन तंत्रों के माध्यम से लागू किया जाता है, जो फ्रेमवर्क के कोर में निर्मित हैं।
.NET में i18n की मुख्य अवधारणाएँ
- ग्लोबलाइज़ेशन — एप्लिकेशन को कई संस्कृतियों (जैसे, दिनांक, संख्याएँ, मुद्राओं का फ़ॉर्मेटिंग) के समर्थन के साथ डिज़ाइन करना।
- लोकलाइज़ेशन — इंटरफ़ेस को किसी विशिष्ट संस्कृति के अनुकूल बनाना (टेक्स्ट, इमेज, ध्वनियों का अनुवाद)।
- कल्चर (Culture) — भाषा और क्षेत्रीय सेटिंग्स का संयोजन, जिसे
hi-IN,en-US,de-DEजैसे कोड से दर्शाया जाता है। - रिसोर्स फ़ाइलें (.resx) — XML फ़ाइलें जिनमें प्रत्येक लोकेल के लिए "कुंजी-मान" जोड़े होते हैं।
C# (.NET) में i18n कैसे काम करता है
.NET में लोकलाइज़ेशन के लिए रिसोर्स फ़ाइलों का उपयोग किया जाता है। मुख्य फ़ाइल (जैसे, Strings.resx) में डिफ़ॉल्ट भाषा (आमतौर पर अंग्रेज़ी) के स्ट्रिंग होते हैं। प्रत्येक अतिरिक्त भाषा के लिए, कल्चर कोड के साथ एक अलग फ़ाइल बनाई जाती है: Strings.hi.resx (हिंदी), Strings.de.resx (जर्मन)। कंपाइलेशन के दौरान, ये फ़ाइलें सैटेलाइट असेंबली में बदल जाती हैं, जो थ्रेड की वर्तमान कल्चर के आधार पर लोड होती हैं।
// रिसोर्स फ़ाइल का उदाहरण (Strings.resx)
// Key: HelloMessage, Value: "Hello, World!"
// Strings.hi.resx
// Key: HelloMessage, Value: "नमस्ते, दुनिया!"
कंसोल एप्लिकेशन में लोकलाइज़ेशन का चरण-दर-चरण कार्यान्वयन
- रिसोर्स फ़ाइल बनाएँ प्रोजेक्ट में: प्रोजेक्ट पर राइट-क्लिक करें → Add → New Item → Resources File। इसे
Strings.resxनाम दें। - स्ट्रिंग जोड़ें: कुंजी
Greetingऔर मानHello, user!डालें। - हिंदी के लिए फ़ाइल बनाएँ:
Strings.hi.resxउसी कुंजी और माननमस्ते, उपयोगकर्ता!के साथ। - कोड लिखें कल्चर सेट करने और लोकलाइज़्ड स्ट्रिंग प्राप्त करने के लिए:
using System.Globalization;
using System.Resources;
using System.Threading;
class Program
{
static void Main()
{
// हिंदी कल्चर सेट करें
Thread.CurrentThread.CurrentUICulture = new CultureInfo("hi-IN");
Thread.CurrentThread.CurrentCulture = new CultureInfo("hi-IN");
// रिसोर्स मैनेजर प्राप्त करें
ResourceManager rm = new ResourceManager("YourNamespace.Strings", typeof(Program).Assembly);
string greeting = rm.GetString("Greeting");
Console.WriteLine(greeting); // आउटपुट: "नमस्ते, उपयोगकर्ता!"
}
}
ASP.NET Core वेब एप्लिकेशन का लोकलाइज़ेशन
ASP.NET Core में, i18n को मिडलवेयर और बिल्ट-इन सर्विसेज के माध्यम से लागू किया जाता है। MVC या Razor Pages के लिए सेटअप का उदाहरण देखें।
1. Program.cs में कॉन्फ़िगरेशन
using Microsoft.AspNetCore.Localization;
using System.Globalization;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddLocalization(options => options.ResourcesPath = "Resources");
builder.Services.AddControllersWithViews()
.AddViewLocalization()
.AddDataAnnotationsLocalization();
var app = builder.Build();
var supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("hi-IN") };
app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
});
app.UseStaticFiles();
app.UseRouting();
app.MapDefaultContr