التدويل (i18n) في C# (.NET): دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التدويل (i18n) في C# (.NET)

\n

التدويل (اختصاراً i18n - من الكلمة الإنجليزية "internationalization"، حيث 18 هو عدد الحروف بين الحرف الأول "i" والحرف الأخير "n") هو عملية تصميم البرمجيات بحيث يمكن تكييفها مع لغات ومناطق وخصائص ثقافية مختلفة دون إجراء تغييرات على الكود المصدري. في منصة .NET (C#)، يتم تنفيذ i18n من خلال آليات التوطين والعولمة المضمنة في نواة الإطار.

\n\n

المفاهيم الأساسية لـ i18n في .NET

\n
    \n
  • العولمة — تصميم التطبيق لدعم ثقافات متعددة (مثل تنسيق التواريخ والأرقام والعملات).
  • \n
  • التوطين — تكييف الواجهة مع ثقافة معينة (ترجمة النصوص والصور والأصوات).
  • \n
  • الثقافة (Culture) — مزيج من اللغة والإعدادات الإقليمية، يُرمز له برمز مثل ru-RU أو en-US أو de-DE.
  • \n
  • ملفات الموارد (.resx) — ملفات XML تحتوي على أزواج "مفتاح-قيمة" لكل لغة محلية.
  • \n
\n\n

كيف يعمل i18n في C# (.NET)

\n

في .NET، يتم استخدام ملفات الموارد للتوطين. الملف الرئيسي (مثل Strings.resx) يحتوي على النصوص باللغة الافتراضية (عادة الإنجليزية). لكل لغة إضافية، يتم إنشاء ملف منفصل مع لاحقة رمز الثقافة: Strings.ru.resx (الروسية)، Strings.de.resx (الألمانية). أثناء التجميع، يتم تحويل هذه الملفات إلى تجميعات تابعة يتم تحميلها بناءً على الثقافة الحالية للخيط.

\n\n
// مثال على ملف موارد (Strings.resx)\n// المفتاح: HelloMessage، القيمة: "Hello, World!"\n// Strings.ru.resx\n// المفتاح: HelloMessage، القيمة: "Привет, мир!"\n
\n\n

تنفيذ التوطين خطوة بخطوة في تطبيق وحدة التحكم

\n
    \n
  1. أنشئ ملف موارد في المشروع: انقر بزر الماوس الأيمن على المشروع ← Add ← New Item ← Resources File. سمِّه Strings.resx.
  2. \n
  3. أضف النصوص: أدخل المفتاح Greeting والقيمة Hello, user!.
  4. \n
  5. أنشئ ملفاً للغة الروسية: Strings.ru.resx بنفس المفتاح والقيمة Привет, пользователь!.
  6. \n
  7. اكتب الكود لتعيين الثقافة والحصول على النص المترجم:
  8. \n
\n\n
using System.Globalization;\nusing System.Resources;\nusing System.Threading;\n\nclass Program\n{\n    static void Main()\n    {\n        // تعيين الثقافة الروسية\n        Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU");\n        Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");\n\n        // الحصول على مدير الموارد\n        ResourceManager rm = new ResourceManager("YourNamespace.Strings", typeof(Program).Assembly);\n        string greeting = rm.GetString("Greeting");\n\n        Console.WriteLine(greeting); // سيطبع: "Привет, пользователь!"\n    }\n}\n
\n\n

توطين تطبيقات الويب ASP.NET Core

\n

في ASP.NET Core، يتم تنفيذ i18n من خلال middleware والخدمات المضمنة. لنلقِ نظرة على مثال إعداد لتطبيقات MVC أو Razor Pages.

\n\n

1. الإعداد في Program.cs

\n
using Microsoft.AspNetCore.Localization;\nusing System.Globalization;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddLocalization(options => options.ResourcesPath = "Resources");\nbuilder.Services.AddControllersWithViews()\n    .AddViewLocalization()\n    .AddDataAnnotationsLocalization();\n\nvar app = builder.Build();\n\nvar supportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("ru-RU") };\napp.UseRequestLocalization(new RequestLocalizationOptions\n{\n    DefaultRequestCulture = new RequestCulture("en-US"),\n    SupportedCultures = supportedCultures,\n    SupportedUICultures = supportedCul                    

توصيات