أفضل الممارسات لتطوير تطبيقات World-Ready
هذا المقطع يصف أفضل الممارسات الواجب متابعتها عند تطوير التطبيقات المعتمدة من العالم.
أفضل الممارسات للعولمة
قم بعمل الـ Unicode الخاص بتطبيقك داخلياً.
قم باستخدام فئات تتعرف على الثقافة، التي توفرها مساحة الاسم System.Globalization لمعالجة و تنسيق البيانات.
من أجل الفرز، استخدم الفئة SortKey و الفئة CompareInfo.
للمقارنات بين السلاسل، قم باستخدام الفئة CompareInfo.
لتنسيق التاريخ و الوقت، قم باستخدام الفئة DateTimeFormatInfo.
للتنسيق الرقمي، قم باستخدام الفئة NumberFormatInfo.
للتقويم الميلادي و الغير الميلادي، قم باستخدام الفئة Calendar أو أحد تطبيقات التقويم المخصصة.
قم باستخدام إعدادات خاصية الثقافة التي يتم توفيرها من قبل الفئة System.Globalization.CultureInfo في المواقف الملائمة. قم باستخدام الخاصية CultureInfo.CurrentCulture لتنسيق المهام، مثل التاريخ و الوقت أو التنسيق الرقمي. قم باستخدام الخاصية CultureInfo.CurrentUICulture لاسترداد الموارد. لاحظ أن الخصائص CurrentCulture و CurrentUICulture يمكن تعيينها لكل مؤشر ترابط.
قم بتمكين التطبيق الخاص بك من قراءة و كتابة البيانات من و إلى مجموعة متنوعة من الترميزات باستخدام فئات الترميز في مساحة الاسم System.Text. لا تفترض بيانات ASCII. افترض أن الأحرف الدولية سوف يتم توفيرها في أي مكان يمكن للمستخدم إدخال نص فيه. على سبيل المثال، يجب أن يقبل التطبيق أحرف دولية في أسماء الخادم، و الدلائل، و أسماء الملفات، و أسماء المستخدمين و الـ URL.
عند استخدام الفئة UTF8Encoding، لأسباب تأمينية، استخدم ميزة الكشف عن خطأ المقدمة بواسطة هذه الفئة. لتشغيل ميزة الكشف عن خطأ، يقوم التطبيق بإنشاء مثيل من الفئة باستخدام المنشئ الذي يأخذ المعلمة throwOnInvalidBytes و يقوم بتعيين قيمة هذه المعلمة إلى true.
كلما أمكن، قم بمعالجة السلاسل كسلاسل كاملة بدلاً من مجموعة من الأحرف الفردية. هذا مهم بشكل خاص عند الفرز أو البحث عن سلاسل فرعية. سيمنع هذا المشاكل المقترنة بتحليل الأحرف المدمجة.
قم بعرض النصوص باستخدام الفئات المتوفرة في مساحة الاسم System.Drawing.
للتناسق عبر أنظمة التشغيل، لا تسمح لإعدادات المستخدم بتجاوز CultureInfo. قم باستخدام المنشئ CultureInfo الذي يقبل المعلمة useUserOverride و قم بتعيينه إلى false.
قم باختبار وظائف التطبيق الخاصة بك على الإصدارات الدولية من نظام التشغيل باستخدام بيانات الدولية.
إذا كان قرار أمان يستند على نتيجة عملية مقارنة بين السلاسل أو عملية تغيير حالة، اجعل التطبيق يقوم بتنفيذ عملية غير متحسسة للثقافة. تضمن هذه الممارسة أن الناتج لا يتأثر بقيمة CultureInfo.CurrentCulture. راجع مخططات الحالة المخصصة و قواعد الفرز للحصول على مثال يوضح كيف يمكن أن تنتج المقارنات بين السلاسل الغير متحسسة للثقافة نتائج غير متناسقة.
أفضل الممارسات للترجمة
قم بنقل كافة الموارد القابلة للترجمة إلى DLLs منفصلة للموارد فقط. تتضمن الموارد القابلة للترجمة عناصر واجهة المستخدم مثل السلاسل، و رسائل الخطأ، و مربعات الحوار، و القوائم، و موارد الكائن المضمن.
لا تقم بتضمين سلاسل أو موارد واجهة المستخدم.
لا تضع موارد غير قابلة للترجمة في DLL الموارد فقط. هذا يؤدي إلى حيرة المترجمين.
لا تستخدم السلاسل المركبة التي يتم إنشاؤها في وقت التشغيل من العبارات المتصلة. يصعب ترجمة السلاسل المركّبة لأنها غالباً تفترض ترتيب نحوي إنجليزي، و الذي لا يتم تطبيقه على كافة اللغات.
تجنب الثوابت المبهمة مثل "Empty Folder" حيث يمكن أن تُترجَم السلاسل بشكل مختلف استناداً إلى الأدوار النحوية لمكونات السلسلة. على سبيل المثال، "empty" يمكن أن تكون فعل أو صفة، مما يمكن أن يؤدي إلى ترجمات مختلفة في لغات مثل الإيطالية أو الفرنسية.
تجنب استخدام الصور و الأيقونات التي تحتوي على نص في التطبيق الخاص بك. تكون مكلفة في ترجمتها.
قم بإفراد مساحة كبيرة ليتسع فيها طول السلاسل في واجهة المستخدم. في بعض اللغات، يمكن أن تتطلب العبارات من 50 إلى 75 بالمائة مساحة أكبر من المساحة المطلوبة في لغات أخرى.
قم باستخدام الفئة System.Resources.ResourceManager لاسترداد الموارد استناداً إلى الثقافة.
قم باستخدام Visual Studio 2010 لإنشاء مربعات حوار Windows Forms بحيث يمكن ترجمتها باستخدام محرر الموارد الخاص بـWindows Forms أي (Winres.exe) . لا تقم بكتابة التعليمات البرمجية لمربعات الحوار Windows Forms يدوياً.
استخدم ترجمة محترفة (ترجمة ذات مستوى عالي).
للحصول على وصف كامل لإنشاء و ترجمة الموارد، راجع الموارد في التطبيقات .
أفضل الممارسات لعولمة تطبيقات ASP.NET
قم بتعيين الخصائص CurrentUICulture و CurrentCulture في التطبيق الخاص بك بوضوح. لا تعتمد على الإعدادات الافتراضية.
لاحظ أن تطبيقات ASP.NET هي تطبيقات مدارة و بالتالي يمكنها استخدام نفس الفئات التي تستخدمها التطبيقات المدارة الأخرى لاسترداد ، و عرض، و التعامل مع المعلومات استناداً إلى الثقافة.
يجب أن تدرك أنه يمكنك تحديد الأنواع الثلاثة التالية من الترميزات في ASP.NET:
يقوم requestEncoding بتحديد الترميز المتلقى من قبل مستعرض العميل.
يقوم responseEncoding بتعيين الترميز المراد إرساله إلى مستعرض العميل. في معظم الحالات، هذا الترميز يجب أن يكون هو نفس الترميز المحدد لـ requestEncoding.
يقوم fileEncoding بتحديد الترميز الافتراضي لـ .aspx و .asmx و تحليل ملف الـ .asax.
قم بتحديد قيم السمات requestEncoding و responseEncoding و fileEncoding و culture و uiCulture في الأماكن الثلاثة التالية في تطبيق ASP.NET:
في مقطع العولمة في ملف Web.config. هذا الملف يكون خارجياً بالنسبة لتطبيق ASP.NET. لمزيد من المعلومات، راجع عنصر <globalization> .
في توجيه صفحة. لاحظ أن، عندما يكون أحد التطبيقات في صفحة، يكون الملف قد تمت قراءته بالفعل. و بذلك، يكون قد تأخر الوقت لتحديد fileEncoding و requestEncoding. يمكن تحديد uiCulture و Culture و responseEncoding فقط في توجيه صفحة.
بشكل برمجي في التعليمات البرمجية لتطبيق. يمكن أن يختلف هذا الإعداد لكل طلب. كما في توجيه صفحة، في الوقت الذي يستغرقه للوصول إلى التعليمات البرمجية للتطبيق، يكون الوقت قد تأخر لتحديد fileEncoding و requestEncoding. يمكن تحديد uiCulture و Culture و responseEncoding فقط في التعليمات البرمجية للتطبيق.
لاحظ أنه يمكن تعيين قيمة uiCulture إلى لغة قبول المستعرض. للحصول على تفاصيل، راجع نموذج "العمل مع موارد" QuickStart ASP.NET.