التعميم لـ WPF
يقدم هذا الموضوع المسائل التي يجب أن تكون على علم بها عند كتابة تطبيقات Windows Presentation Foundation (WPF) للسوق العالميية. عناصر البرمجة العالمية معرّفة في Microsoft .NET في System.Globalization.
يشتمل هذا الموضوع على الأقسام التالية.
- عولمة XAML
- تصميم واجهة مستخدم دولية مع XAML
- تطوير التطبيقات القابلة للترجمة
- استخدام ClickOnce مع تطبيقات مترجمة
- موضوعات ذات صلة
عولمة XAML
يستند Extensible Application Markup Language (XAML)إلىXML و يستفيد من دعم التعميم المعرف في المواصفاتXML. تصف المقاطع التالية بعض ميزات XAML التي يجب أن تكون على علم بها.
أحرف مرجعية
يعطي الحرف المرجعى رقم الحرف Unicode المعين الذى يمثله إما بالطريقة العشرية أو الست عشرية. يظهر المثال التالي حرف عشري مرجعى.
Ϩ
يوضح هذا المثال حرف مرجع سداسي عشري. لاحظ أنها تحتوي على x أمام الرقم السداسي العشري.
Ϩ
الترميز
ترميز معتمد بواسطة XAMLهي ASCII، UnicodeUTF-16 و UTF-8. بيان الترميز هو في البداية XAMLمستند. في حالة عدم وجود الترميز السمة exهوts وهناك هو البايت ذو الترتيب، لا يوجد المحلل الافتراضي UTF-8. UTF-8 و UTF-16 هي ترميزات المفضل. (وUTF-7 غير مدعوم .) يوضح المثال التالي كيفية تحديد ترميز UTF-8 في ملف XAML.
?xml encoding="UTF-8"?
لغة السمة
يستخدم XAML xml:lang لتمثيل سمة اللغة لعنصر. للاستفادة من CultureInfoفصل دراسي، القيمة سمة اللغة يحتاج إلى أن يكون واحد أسماء الثقافة معرفة مسبقاً بواسطة CultureInfo. xml:lang هو القابلة للتوريث في شجرة عنصر (بواسطة قواعد XML، ليس بالضرورة نظراً للتبعية وراثة الخصائص) والقيمة الافتراضية هو سلسلة فارغ إذا كان هذا هو ليس تعيينها بوضوح.
سمة اللغة مفيدة جداً لتحديد اللهجات. على سبيل المثال، الفرنسية تمتلك نطق وكلمات واملاء مختلفين فى فرنسا بلجيكا و سويسرا و الكلمات. أيضاً الصينية, اليابانية, والكورية تتشارك فى نقاط التعليمات البرمجية في Unicode ، ولكن الأشكال الإيديوغرامية تختلف ثم تستخدم خطوط مختلفة كلية.
مثالExtensible Application Markup Language (XAML) التالي يستخدم fr-CA كسمة اللغة لتحديد الفرنسية الكندية.
<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>
Unicode
يدعم XAMLكافة سماتUnicode بما فيها ميزات البدائل. طالما يمكن تعيين مجموعة الأحرف الى Unicode, فيمكن أن يتم اعتمادها. على سبيل المثال، يقدم GB18030 بعض الأحرف التي يتم تعيينها الى ملحق الصينية واليابانية والكورية (CFK) A و B وأزواج البديل ، لذلك فهو معتمد بشكل كامل. يمكن للتطبيق WPF استخدام StringInfo لمعالجة السلاسل بدون فهم ما إذا كان لديهم أزواج بديلة أو أحرف منضمة.
تصميم واجهة مستخدم دولية مع XAML
يصف هذا القسم ميزات واجهة المستخدم (UI) التي يجب وضعها في الاعتبار عند كتابة تطبيق ما.
نص دولى
يتضمن WPF معالجة مضمنة خاصة لنظم الكتابة المدعمة من قبلMicrosoft NET Framewor..
يتم حالياً اعتماد البرامج النصية التالية:
العربية
البنغالية
الديفنغارية - INSCRIPT
السيريلية
اليونانية
الجيوجاراتية
غورموكية
العبرية
البرامج النصية الإيديوغرامية
الكانادية
اللاوية
اللاتينية
المالايالامية
المنغولية
الأوريا
السيرياكية
التاميلية
التيلوغية
Thaana
التايلاندية
التيبتية – جمهورية الصين الشعبية
* في هذا الإصدار عرض وتحرير النص التايلاندي معتمد; فصل الكلمة غير معتمد.
يتم حالياً عدم اعتماد البرامج النصية التالية:
الخميرية
الكورية الهانغولية القديمة
ميانمار
السنهالية
الجميع نظام كتابة engines دعم OpenTypeخطوط. OpenTypeيمكن تضمين خطوطOpenTypeتخطيط الجداول creaإلىrs خط لتمكين تلك إلى تصميم أفضل الدولية ومحل typographic خطوط. تحتوى جداول تخطيط الخطوط OpenType على معلومات حول استبدال الصورة الرمزية وتعيين موضع الصورة الرمزية والضبط وتعيين موضع الأساس وتمكين تطبيقات معالجة النص لتحسين تخطيط النص.
تسمح خطوط OpenType بمعالجة مجموعات الصور الرمزية الكبيرة باستخدام ترميز Unicode. تسمح مثل هذه جداول الترميز دعم دولي واسع كما تسمح بتغيرات طباعة الصورة الرمزية.
تقديم النص WPF مدعم بواسطة تكنولوجيا ما بعد البكسل Microsoft ClearType الذى يعتمد استقلال الدقة. هذا بشكل كبير يعمل على تحسين درجة الوضوح ويوفر إمكانية اعتماد المستندات على نمط المجلات عالية الجودة لكافة البرامج النصية.
التخطيط الدولي
يوفر WPF طريقة ملائمة جداً لدعم التخطيط الأفقي وثنائي الاتجاه والعمودي. في إطار العرض التقديمي الخاصية FlowDirection يمكن استخدامها لتعريف التخطيط. نقوش اتجاه التدفق:
LeftToRight - تخطيط أفقي للاتينية والشرق آسيوية وهكذا.
RightToLeft - ثنائية الاتجاه للعربية, العبرية وما الى ذلك.
تطوير التطبيقات القابلة للترجمة
عند كتابة تطبيق للاستخدام العالمى يجب أن تراعى أن يكون القابلة للترجمة. تشير المواضيع التالية الأشياء الواجب مراعاتها.
حزمة واجهة المستخدم متعددة اللغات (حزمة MUI)
واجهات المستخدم متعددة اللغات (MUI) هو دعم Microsoft لتبديل واجهات المستخدم من لغة الى أخرى. يستخدم التطبيق WPF نموذج التجميع كى يدعم MUI. تطبيق واحد يحتوي على تجميعات اللغة المحايدة وتجميعات الموارد التى تعتمد على اللغة. يؤشر الإدخال هو.EXE مدارة في تجميع الرئيسي. WPFأداة تحميل الموارد تستفيد منإدارة الموارد Framework's إلى دعم البحث عن الموارد ونظام الاستعاضة. يعمل العديد من التجميعات التابعة متعددة اللغة بنفس التجميع الرئيسي. يعتمد تجميع المورد الذي تم تحميله على CurrentUICulture الخاص بمؤشر الترابط الحالي.
واجهة المستخدم القابلة للترجمة
WPFتستخدم التطبيقاتXAMLإلى تعريف بهمواجهة المستخدم. XAMLيسمح للمطورين إلى تحديد تسلسل هرمي للكائنات باستخدام التعيين من الخصائص ومنطق. الاستخدام الأساسي لـ XAML هو لتطوير تطبيقات WPF ولكن يمكن أن تستخدم لتحديد التسلسل الهرمي لأي كائنات وقت تشغيل اللغة العامة (CLR). يستخدم معظم المطورون XAML لتحديد واجهة المستخدم الخاص بالتطبيق الخاص بهم ويستخدموا لغة برمجة مثل #C للرد على تفاعل المستخدم.
من منظور الموارد ، ملف XAML المصمم لوصف لغة غير مستقلة واجهة المستخدم هو عنصر مورد و لذلك يجب أن يكون تنسيق التوزيع النهائي الخاص به قابل للترجمة لدعم اللغات الدولية. لأن XAML لا يمكنه معالجة أحداث، تحتوى العديد من تطبيقات XAML على كتل من التعليمات البرمجية لتقوم بذلك. لمزيد من المعلومات، راجع نظرة عامة على XAML (WPF). يتم تجريد رمز الخروج و التحويل البرمجي في الثنائيات مختلفة عند على XAMLهو tokenized الملف في XAML ثنائي (BAML). BAMLالملفات والصور وأنواع غير ذلك من مورد مدار الكائنات المضمنة في تجميع الموارد عبر القمر الصناعي، التي يمكن أن تكون مترجمة إلى لغة غير ذلك، أو التجميع الرئيسي عند التعريب هو غير مطلوب.
ملاحظة |
---|
تعتمد تطبيقات WPF كافة موارد Framework CLR بما في ذلك جداول السلاسل والصور وهكذا. |
إنشاء تطبيقات قابلة للترجمة
يعني التعريب ملائمة واجهة المستخدم للثقافات المختلفة. لجعل تطبيق WPF قابل للترجمة , يحتاج المطورين إلى إنشاء كافة الموارد القابلة للترجمة في مورد تجميع. يترجم مورد التجميع إلى لغات مختلفة وتستخدم التعليمات البرمجية الخلفية إدارة الموارد API للتحميل. أحد الملفات المطلوبة من أجل تطبيق WPF هو ملف مشروع (.proj). يجب تضمين كافة الموارد التي تستخدمها في التطبيق الخاص بك في ملف المشروع. المثال التالي من ملف .csproj يوضح كيفية القيام بذلك.
<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>
لاستخدام مورد في التطبيق الخاص بك ، يجب إنشاء ResourceManager وتحميل المورد الذي تريد استخدامه. يوضح مثال التعليمات البرمجية التالي كيفية القيام بذلك.
Private Sub OnClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim rm As New ResourceManager("stringtable", System.Reflection.Assembly.GetExecutingAssembly())
Text1.Text = rm.GetString("Message")
End Sub
void OnClick(object sender, RoutedEventArgs e)
{
ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
Assembly.GetExecutingAssembly());
Text1.Text = rm.GetString("Message");
}
استخدام ClickOnce مع تطبيقات مترجمة
ClickOnce هو تقنية نشر نماذج Windows جديدة سوف تشحن مع Microsoft Visual Studio 2005. تعمل على تمكين تثبيت التطبيق ثم الترقية من تطبيقات ويب. عند ترجمة تطبيق تم نشره بواسطة ClickOnce يمكن عرضه فقط على البيانات الموروثة المترجمة. على سبيل المثال، إذا كان التطبيق المنسر مترجم إلى اليابانية فإنه يمكنك فقط عرضه في Microsoft Windows يابانية وليس على Windowsانجليزية. يقدم ذلك مشكلة لأنه سيناريو شائع للمستخدمين اليابانيين لتشغيل إصدار اللغة الإنجليزية من Windows.
حل هذه المشكلة هو تعيين سمة اللغة الحيادية البديلة. يمكن لمطور تطبيق بشكل اختياري إزالة الموارد من التجميع الرئيسي وتحديد أن الموارد يمكن العثور عليها فى تجميع تابع مقابل لبيانات موروثة معينة. للتحكم فى هذه العملية قم بإستخدام عنصر التحكم NeutralResourcesLanguageAttribute. مُنشئ الفئة NeutralResourcesLanguageAttribute يحتوي على توقيعين أحدهما يأخذ متغير UltimateResourceFallbackLocation لتحديد الموقع حيث يجب أن يطلق ResourceManager الموارد البديلة: التجميع الرئيسى أو التجميع التابع المثال التالي يوضح كيفية إستخدام هذه السمة. للموقع النهائي البديل، يقوم أن تقوم التعليمات البرمجية ببناء ResourceManager للبحث عن الموارد في الدليل الفرعي "de" في دليل التجميع الذي يتم تنفيذه حالياً.
[assembly: NeutralResourcesLanguageAttribute(
"de" , UltimateResourceFallbackLocation.Satellite)]