ترجمة مخصصة
From LimeSurvey Manual
مقدمة
منذ الإصدار LimeSurvey 5.4.0 يمكنك الحصول على ترجمتك الخاصة لجميع النصوص في جميع اللغات المضمّنة، وذلك عبر الوصول المباشر إلى قاعدة البيانات.
يمكن استخدام هذا النظام إذا كانت الترجمة الحالية غير متوافقة مع احتياجات عملك.
يُفضّل قصره على حالات محددة، لأن تعديلات النصوص في صميم LimeSurvey ستتطلب مرة أخرى تعديل قاعدة البيانات.
بالإضافة إلى ذلك، يمكنك استخدام هذه الطريقة لترجمة النصوص الخاصة بتصميم الاستبيان.
كيف تعمل ترجمات قاعدة البيانات
بالنسبة لترجمات قاعدة البيانات، يستخدم LimeSurvey طريقة مستوحاة من CDbMessageSource من إطار عمل Yii.
- ابحث عن النص في جدول SourceMessage lime_source_message->message، واحصل على المعرّف: lime_source_message->id
- إذا كان موجوداً، فابحث عن الترجمة المرتبطة في جدول Message lime_message->translation للغة الحالية lime_message->language بالمعرّف الحالي lime_message->id
ينشئ LimeSurvey صفيف الترجمات من ملف po (راجع ترجمة LimeSurvey لمعرفة كيفية تحديث هذا الملف)، ثم يدمجه بعد ذلك مع جميع الترجمات الموجودة في قاعدة البيانات.
بعد ذلك تُعاد ترجمات قاعدة البيانات دائماً إذا كانت موجودة.
مثال على زر "أرسل" بالإنجليزية والفرنسية
تريد عرض _Validate_ بدلاً من _Submit_ على زر الإرسال في جميع استبياناتك (مع تصميم محدد). إذا قمت فقط بتحديث التصميم واستبدال gT('Submit') بـ gT('Validate') فسيظهر _Validate_ دائماً في جميع اللغات.
لجميع الاستبيانات مع كل القوالب
- أنشئ رسالة المصدر
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Submit'); - تحقق من المعرّف (إذا كانت الأولى فالمعرّف هو 1) واستخدمه في التعليمة التالية
- أنشئ الترجمة المرتبطة:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'en', 'Validate'), ('1', 'fr', 'Valider');
لا تستبدل النص بسلسلة فارغة، وإلا ستعود الترجمة إلى الجملة الإنجليزية الأصلية. يجب أن تضع مسافة واحدة على الأقل.
استخدام تصميمك الخاص (الحل الموصى به)
تعتمد هذه الطريقة على قالبك الخاص، وهي تحدّث النص الافتراضي لجميع اللغات الأخرى أيضاً.
- في محرر القالب اختر جزء التنقل
- ابحث عن
Template:GT("Submit")(في navigator.twig) - استبدله بـ
Template:GT("Validate") - أنشئ رسالة المصدر
INSERT INTO lime_source_message (id, category, message) VALUES (NULL, '', 'Validate'); - تحقق من المعرّف (إذا كانت الأولى فالمعرّف هو 1) واستخدمه في التعليمة التالية
- أنشئ الترجمة المرتبطة:
INSERT INTO lime_message (id, language, translation) VALUES ('1', 'fr', 'Valider');
يرجى الملاحظة
يجب أن يكون الحقل category في lime_source_message سلسلة فارغة ('') وليس NULL. إذا لم تتطابق الفئة تماماً، فلن تعثر الدالة gT() على رسالة المصدر ولن تُطبَّق ترجمتك. هذا مهم بشكل خاص عند إضافة ترجمات للنصوص الخاصة بالتصميم.