يُوفِّر إطار عمل .NET طرائق مُبسطة لتَدْويِل (Internationalization) وتَوْطِين (localization) مشروعك. التَدْويِل هو بناء مشروعك بطريقة تُسهِل من عملية تَهيئته للعَمَل بلغات مُختلفة دون إجراء تَغْييرات جوهرية عليه. يتم ذلك بفَصْل ملفات الترجمة عن ملفات شيفرة المشروع. في المقابل، فإن التَوْطِين هو عملية تهيئة المشروع ذاتها ليعَمَل مع لغة بعينها من خلال ترجمة النصوص إلى تلك اللغة. يُطلَق مُصطلح العَولمة (Globalization) ليشمل كُلًا من التَدْويِل والتَوْطِين.
مثال بمشروع ASP.NET MVC
أولًا: أَضِف حزمة I18N إلى مشروع الـ MVC الخاص بك.
ثانيًا: أَضِف i18n.LocalizingModule
لقسم <httpModules>
أو لقسم <modules>
بملف web.config
، كالتالي:
<!-- IIS 6 --> <httpModules> <add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" /> </httpModules> <!-- IIS 7 --> <system.webServer> <modules> <add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" /> </modules> </system.webServer>
ثالثًا: أَضِف مجلد باسم locale
للمجلد الرئيسي الخاص بموقعك، ثم انشِئ بداخله مجلد فرعي لكل لغة ترغب بدَعْمها، مثلًا /locale/ar/
.
رابعًا: انشِئ ملفًا نصيًا باسم messages.po
بداخل كل مجلد من المجلدات الفرعية من الخطوة السابقة.
خامسًا: يُمكِنك كتابة السطور التالية بملف messages.po
، فقط بغرض الاختبار:
#: Translation test msgid "Hello, world!" msgstr "أهلًا بالعالم!"
سادسًا: أَضِف مُتحكِمًا (controller) إلى المشروع، يُعيد نصًا ما بغرض تجربة الترجمة. في المثال التالي، يُعيد المُتحكِم القيمة "[[[Hello, world!]]]"
. لاحظ أنه لابُد للنص الموجود داخل الأقواس الثلاثة أن يتطابق مع قيمة msgid
ضِمْن ملف الترجمة .po
using System.Web.Mvc; namespace I18nDemo.Controllers { public class DefaultController : Controller { public ActionResult Index() { return Content("[[[Hello, world!]]]"); } } }
سابعًا: شغِّل المشروع، ثم اِفتَح الرابط المُقابِل للإجراء (action) الذي عَرَّفناه للتو، مثلًًا http://localhost:[yourportnumber]/default
. ستُلاحِظ أنه قد تم تَغْيير الرابط تلقائيًا ليَعكِس اللغة الافتراضية الخاصة بك كالتالي http://localhost:[yourportnumber]/en/default
-بفرض أن الانجليزية هي اللغة الافتراضية بمُتصفحك.
ثامنًا: إذا استبدلت كلمة ar
(أو اللغة التي أَعددت ملف ترجمة خاص بها) بكلمة en
الموجودة بالرابط، فستظهر النُسخة المُترجمة من النص.
تاسعًا: إذا غَيّرت إعدادات اللغة بمُتصفحك لتفضِيل لغة أُخرى، ثم فتحت الرابط /default
مُجددًا دون تخصيص اللغة، ستجد أنه مثل المرة السابقة قد تم تَغْيير الرابط تلقائيًا ليَعكِس لغتك الافتراضية التي قمت بضَبطِها في الخطوة السابقة، وسيَظهر النص مُترجمًا بتلك اللغة.
عاشرًا: أَضِف مُعالِجَات (handlers) بملف web.config
لمنع مُستخدِمي موقعك من فَتح مجلد locale
.
<!-- IIS 6 --> <system.web> <httpHandlers> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> </system.web> <!-- IIS 7 --> <system.webServer> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/> </handlers> </system.webServer>
ترجمة -وبتصرف- للفصل Globalization من كتاب .NET Framework Notes for Professionals
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.