5. التوطين¶
واجهة مستخدم QGIS متاحة بلغات متعددة.
يتيح خيار عام في الإعدادات تجاوز لغة واجهة المستخدم التي اكتُشفت تلقائيًا من نظام التشغيل.
يختلف تمثيل الأرقام والعملات والتواريخ حسب البلد، ويمكن أيضًا تجاوزه في الإعدادات.
ويتيح خيار آخر في الإعدادات تحديد ما إذا كان يجب استخدام فاصل الآلاف الرقمي.
تُنفَّذ جميع هذه الميزات من خلال صنف QT المسمى QLocale الذي يوفر دعمًا متكاملًا جدًا لتمثيل الأنواع الرقمية وأنواع التاريخ.
لكي يعمل هذا النظام، يجب اتباع بعض القواعد بعناية عند عرض القيم الرقمية في واجهة مستخدم QGIS وعند تحويل مدخلات المستخدم إلى متغيرات صحيحة أو ذات فاصلة عائمة.
5.1. تحويل الأرقام إلى سلاسل نصية¶
بالنسبة للسلاسل النصية التي تُطبع على الشاشة ويراها المستخدمون، لا تستخدم QString::number() لأنه لا يأخذ خيارات الإعدادات المحلية في الاعتبار ويستخدم دائمًا الإعدادات المحلية C.
ولا تستخدم أيضًا استيفاء السلاسل النصية (string interpolation) إلا إذا استخدمت اللاحقة L كما هو موضح في توثيق QString.
استخدم QLocale().toString() بدلًا من ذلك.
مثال:
const QString localizedNumber = QLocale().toString( 1234.56 );
// localizedNumber will be: 1,234.56 using english or "C" locale
// 1.234,56 using italian locale
// 1234.56 using english or "C" locale without thousands separator
// 1234,56 using italian locale without thousands separator
تحذير
ومن الاستثناءات البارزة لهذه القاعدة توليد سلاسل نصية ستُمرَّر إلى تطبيقات أو سكربتات خارجية تتوقع تمثيل الأرقام بنمط C (النقطة كفاصل عشري وبلا فاصل للآلاف). ويجب استخدام QString::number() في هذه الحالة.
5.2. تحويل السلاسل النصية المُدخلة من المستخدم إلى أرقام¶
عند تحويل السلاسل النصية المُدخلة من المستخدم إلى أرقام، لا تستخدم QVariant::toDouble() أو QString::toDouble() أو غيرها من دوال ::toDouble() المتاحة في أصناف QT لأن هذه الدوال تتجاهل الإعدادات المحلية. وينطبق الأمر نفسه على الأنواع الصحيحة ودوال ::toInt() أو ::toLongLong().
يمكن استخدام QLocale().toDouble() أو QLocale().toInt() وغيرها من دوال التحويل في QLocale() في هذه الحالة.
وكبديل أفضل، توفر واجهة QGIS البرمجية بعض الأصناف التي يجب استخدامها لمدخلات المستخدم الرقمية ذات الفاصلة العائمة:
QgsDoubleSpinBoxQgsDoubleValidator
يعرض QgsDoubleSpinBox الرقم وفقًا للإعدادات المحلية للمستخدم وإعداداته، ويتحقق من صحة مدخلات المستخدم باستخدام QgsDoubleValidator.
صنف التحقق متسامح وسيحاول تفسير المدخلات بالتحقق أولًا وفق الإعدادات المحلية للمستخدم، والرجوع إلى الإعدادات المحلية C إن لم يوجد تطابق.
التوصية العامة هي استخدام QgsDoubleSpinBox لجميع عمليات إدخال وإخراج الأنواع ذات الفاصلة العائمة كلما أمكن ذلك، لأنه مُختبَر جيدًا ويتحقق من صحة المدخلات بشكل صحيح. وكبديل، يمكن استخدام الصنف QgsDoubleValidator بشكل مستقل على سلسلة نصية مأخوذة من عنصر واجهة آخر (مثل عنصر QLineEdit بسيط).