عولمة التطبيق

توفر Qt أدوات ومنهجية لتدويل تطبيقك في كل أنحاء العالم. لمزيد من التفاصيل، راجع موضوعالتدويل والتعريب باستخدام Qt Quick.

الخطوات العامة هي كما يلي:

  1. تأكد من أخذ التدويل في الاعتبار في ملفات QML، بما في ذلك استخدام السلاسل النصية وتوضيح النص المطابق واستخدام المعلمات والإعدادات المحلية.
  2. استخدم أداة خط cmd وهي lupdate.exe لإنشاء ملف الترجمة الأساسي، وانسخ ملف الترجمة الأساسي وقم بتسميته لكل اللغات المطلوبة.
  3. استخدم مُتخصّص Qt اللغوي لفتح هذه الملفات، وقدّم الترجمات.
  4. في "المتخصص اللغوي" Qt، اختر ملف > إصدار أو استخدم أداة خط cmd وهي lrelease.exe لإنشاء ملفات الترجمة.
  5. تضمين ملفات الترجمة في المشروع الذي سيخرج كتطبيق مُستقل.

تدويل QML

تُوصي The Qt Company بإكمال الخطوات التالية لتدويل QML:

  1. استخدم qsTr() لكل سلاسل واجهة المستخدم الحرفية.
  2. أضف سياقًا. استخدم أسطر التعليق لوصف مكان استخدام السلسلة، باستخدام بناء الجملة المحدد. //: هو تعليق للمترجم، بينما //~ هي المعلومات الإضافية الاختيارية.
  3. توضيح النصوص المُطابقة. إذا كنت عبارة يمكن أن تحتوي على العديد من المعاني، فأضف معلمة ثانية للتفريق بينها، على سبيل المثال، text: qsTr("back", "not front"); text: qsTr("back", "go backward").
  4. استخدم %x لإدراج معلمات إلى سلسلة، على سبيل المثال text: qsTr("File %1 of %2").arg(counter).arg(total).
  5. استخدم %Lx بحيث تتم ترجمة الأرقام، على سبيل المثال text: qsTr("%L1").arg(total).
  6. تدويل الوقت والتاريخ والعملات، على سبيل المثال، text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale())).
  7. استخدم QT_TR_NOOP() لسلاسل نص البيانات الذي يمكن ترجمته.
  8. استخدم اللغة المحلية لتوسيع معالم الترجمة قدر الإمكان.

لمزيد من التفاصيل عن كل خطوة، راجع موضوعالتدويل والتعريب باستخدام Qt Quick.

يجب الاهتمام بالتدويل عند تضمين الصور في التطبيق. قد تختلف الصورة التي تعرضها بناءً على اللغة المُحددة. يعرض المثال التالي كيفية تحديد ما إذا كان يتم استخدام لغة (RTL) من اليمين إلى اليسار، ويُعيّن خاصية يُعرّفها المستخدم تحمل اسم mirror. يتم استخدام هذه الخاصية لتحديد الصورة التي ستُعرَض.

    property var localeForRTL:["ar", "he", "he-IL"]
    property bool mirror: localeForRTL.indexOf(Qt.locale().uiLanguages[0]) > -1 

    Image{
        source: mirror ? "./RTLimage.png" : "./Image.png"
    }

lupdate

lupdate هو أداة سطر أوامر في Qt تقع في مجلد تثبيت AppStudio.

للتشغيل، افتح نافذة cmd في دليل المشروع وشغّل الأمر التالي. ضع في اعتبارك أن الفترة المستخدمة في كل من الأمثلة التالية تمثل الدليل الحالي، وهو مجلد التطبيق الذي يحتوي على ملفات .qml.

في Windows:

C:\Users\UserName\ArcGIS\AppStudio\Apps\MyApp>"C:\Users\Username\Applications\ArcGIS\AppStudio\bin\lupdate.exe" . -extensions qml -ts languages/MyApp_en.ts

في macOS:

/Users/UserName/applications/ArcGIS/AppStudio/tools/lupdate . -extensions qml -ts languages/MyApp_en.ts

في Ubuntu:

~/Applications/ArcGIS/AppStudio/bin/lupdate . -extensions qml -ts languages/MyApp_en.ts

سيتم إنشا ملف جديد باسم MyApp_en.ts.

يتم إنشاء ترجمات اللغات الجديدة عبر نسخ ملف MyApp_en.ts وإعادة تسميته لكل اللغات المطلوبة، واستبدال اللغة الإنجليزية بكود اللغة لكل اللغات المطلوبة. ومن ثمّ يمكن تحرير ملفات .ts بالمتخصص اللغوي من Qt.

لمزيد من التفاصيل، راجع موضوع استخدام lupdate‎.

المُتخصص اللغوي من Qt

المتخصص اللغوي هو أداة GUI تقع في مجلد تثبيت AppStudio. افتح ملفات .ts التي تم إنشاؤها باستخدام lupdate في "المتخصص اللغوي"، وأضف الترجمات لكل سلسلة مُدرجة. لن يتم معالجة إلا السلاسل المُحددة على أنها جاهزة باستخدام أداة الإصدار.

لمزيد من التفاصيل الإضافية، راجع موضوع دليل Qt Linguist.

lrelease

يُمكنك إنشاء ملفات الإصدار بالطرق التالية:

  • افتح ملف .ts المُكتمل في المتخصص اللوي، ومن قائمة ملف اختر إصدار. سيتم إنشاء ملف .qm للتطابق مع ملف .ts.
  • استخدم أداة خط cmd. أداة lrelease هي أداة سطر أوامر في Qt تقع في مجلد تثبيت AppStudio. يمكن إنشاء ملفات ترجمة وقت التشغيل عبر تشغيل الأمر التالي، إدراج كل ملف لغة مطلوب إنشاؤه:

    lrelease.exe languages\MyApp_ar.ts languages\MyApp_fr.ts

  • مرر خيار -help إلى lrelease لعرض الخيارات المدعومة.

لمزيد من المعلومات، راجع موضوع استخدام lrelease‎.

نشر ملفات الترجمة باستخدام تطبيقك

قبل استخدام أداة إنشاء "Make" لإنشاء ملفات التثبيت، تأكد من تضمين ملفات .qm في المشروع. مجلد مُوصى به يحمل اسم الاصطلاح فيما يلي:

MyApp > languages > qml_localecode.qm

على سبيل المثال، إذا كان التطبيق يحوي ترجمة للألمانية والفرنسية والصينية، ستقوم بتضمين الملفات التالية:

  • MyApp > languages > qml_de.qm
  • MyApp > languages > qml_fr.qm
  • MyApp > languages > qml_zh.qm

يجب عليك أيضًا تحديد موقع تلك الملفات لتطبيقك. يتم تعريف هذه المعلومات في ملف appinfo.json. افتح appinfo.json في محرر نصي، وأضف الخاصية التالية:

    "translations": {
        "fileName": "qml",
        "path": "languages"
    },

في المثال أعلاه، اسم الملف هو qml. أنت لست بحاجة إلى تضمين الشرطة السفلية وكود اللغة. اسم المجلد في نموذج الكود هو languages، وهو ما يُطابق المثال أعلاه. يمكنك اختيار المجلد وأسماء الملفات الخاصة بك حتى تتأكد من تعيينها في ملف appinfo.json.

عند تشغيل التطبيق على أحد الأجهزة بالإعدادات المحلية للنظام، والتي تتطابق مع اللغة التي قدمتها لملف الترجمة، سيعرض التطبيق السلاسل تلقائيًا من الملف الصحيح. أحد البدائل لأغراض الاختبار هي معلمة سطر الأوامر --locale، التي تتجاوز الإعدادات المحلية للنظام مع الكود المحلي المتضمن في المعلمة. على سبيل المثال، إلحاق --locale fr بسطر الأوامر سيقوم بتشغيل التطبيق باستخدام ملفات الترجمة الفرنسية. يمكن أيضًا استخدام معلمات سطر الأوامر هذه عند تشغيل التطبيق الخاص بك في AppStudio، من خلال تعيين المعلمة في حقل وسائط سطر الأوامر: في علامة تبويب Qt Creator المشروعات.

عند استخدام تطبيق مع ملفات الترجمة وإعدادها، يمكن تحميل ملفات ترجمة مختلفة داخل التطبيق باستخدام طريقة loadTranslator في مكون AppFramework.

ترجمة قائمة المتجر

إذا اخترت توزيع التطبيق من خلال متجر، وإذا بذلك مجهودًا لعولمة تطبيقك، يجب عليك وضع ترجمة قائمة المتجر في اعتبارك. يوفر كل من App Store و Google Play إمكانية ترجمة قائمة المتجر. في كلتا الحالتين، لديك الفرصة لتوفير الأوصاف المُترجمة ولقطات الشاشة لكل لغات المتجر في إرسال التطبيق الفردي.

لمزيد من المعلومات، راجع ما يلي: