Jump to table of contents

هذه الصفحة تصف الدوافع والسياسات المتبعة في برامجيات مشروع المعرفة العامة للحفاظ على ترجمات متكاملة ومرنة، أي القابلية على ترجمة المحتوى والنصوص التشغيلية للأنظمة إلى لغات متعددة، مع دعم مزيج سلس من أدوات النشر.

الملفات المحلية #

الملفات المحلية هي ملفات بصيغة XML مخزونة في مجلد واحد أو أكثر ذات تسميات تتبع ترميز اللغة (مثل، en_US للإنجليزية الأمريكية أو fr_CA للفرنسية الكندية). هذه الملفات تحتوي الزوج المفتاح => القيمة ذات الصلة والتي تمثل التسميات الدالة على عبارات اللغة (مثل، “navigation.journalHelp”) حيث تظهر في الترجمات المتعددة (مثلاً، “Journal Help” بالإنجليزية أو “Aide” بالفرنسية).

هناك عدة ملفات للغة، مبوبة حسب الوظيفة. الأماكن الرئيسية التي توضع فيها هي:

  • locale/ - يحتوي على ملفات اللغة الخاصة بالتطبيق نفسه.
  • lib/pkp/locale/ - يحتوي على مكتبة ملفات اللغة المستعملة عموماً في مشروع المعرفة العامة.
  • plugins/*/*/locale/ - يحتوي على ترجمات الإضافات الخاصة بالتطبيق.
  • lib/pkp/plugins/*/*/locale/ - يحتوي على ترجمات الإضافات العامة.

تجزئة محتويات الترجمات في ملفات متعددة يخدم أغراضاً متعددة:

  • الإدامة: الملفات الأصغر حجماً والمبوبة تماماً حسب المواضيع أسهل عند الإدامة. يمكن توزيع مهمة الترجمة بين عدة مترجمين دون الحاجة إلى إجراءات الدمج لاحقاً.
  • إعادة الاستعمال: أي محتوى متوفر في مكتبة مشروع المعرفة العامة يمكن استعماله مع أي تطبيق يحتاجه. تحديث واحد في نظام المجلات المفتوحة قد يقدم إسهامات هامة لترجمة نظام المؤتمرات المفتوحة أو نظام الناشر العلمي.
  • قابلية التنقل: المحتوى المرتبط بالإضافات يمكن رزمه بسهولة لأغراض التوزيع
  • الكفاءة: هذا قد يتطلب إثباتاً، لكنه قد يكون بالإمكان جني بعض التحسينات في الأداء واستعمال الموارد عبر الاقتصار على تحميل مجاميع فرعية من المحتوى اللغوي. معظم طلبات التصفح، على سبيل المثال هي للصفحات الخارجية من الموقع؛ مع ذلك، فإن معظم المحتوى المترجم يختص بتسيير أعمال التحرير.

المحتوى يجب أن يذهب إلى أين؟ #

  • إن كان المحتوى متعلقاً بإضافة واحدة، فعليه أن يوزع معها.
  • إن كان المحتوى غير محدد لنظام واحد، ضعه في مكتبة مشروع المعرفة العامة.
  • حاول تجميع الأمور على أساس منطقي. على سبيل المثال، ملف لغة يسمى “submission.xml” يتعامل بمحتوى يخص طلبات التقديم هو أكثر ترجيحاً لأغراض التمييز من ملف لغة يسمى “author.xml” يتعامل بأمور التأليف ومجريات عمل المؤلف، لأن أي صفحة تعرض أموراً تتعلق بالتقديم غالباً ما ستضم معلومات التأليف ولكنها ليست بالضرورة تمت بصلة إلى المخطط الانسيابي الذي يتبعه المؤلف نفسه.
  • خذ بنظر الاعتبار أي جزء من النظام يستدعي تحميل مفتاح العبارة. إذا كانت الأمور مهيكلة على أساس منطقي سليم، لن يكون من الضروري تحميل ملف لغة كامل من أجل مفتاح منفرد.

كيف عليَّ أن أسمي مفتاح العبارة؟ #

  • المنطق يفرض أن يكون مفتاح العبارة قصيراً وعليه أن يعرف بشكل فريد جملة نصية من اللغة المعنية.
  • على مفاتيح العبارات أن تترتب بشكل مجاميع هرمية، مثلاً، “submission.id”، “submission.history.clearLog”، “submission.history.viewLog” كلها تتوضع ضمن مجال التسمية المستعار “submission”، مراعياً أن تتواجد مع مفاتيع العبارات ذات الصلة بالتأريخ أي ضمن المجموعة الفرعية “submission.history”.
  • بقدر الإمكان، على المفاتيح ذات الصلة مع بعضها أن تبقى متقاربة في ملف اللغة لمساعدة المترجمين في الحفاظ على ترابط المعاني.
  • لا تجعل مسميات المفاتيح قريبة جداً مما يتواجد في واجهات المستخدم. مثلاً، ما يأتي يجب تجنبه:
<message key="manager.setup.step1.journalDescription">وصف المجلة</message>

…بدلاً منه، استعمل شيئاً مماثلاً لـ…

<message key="manager.setup.journalDescription">وصف المجلة</message>

هذا من شأنه الحفاظ على ملف اللغة منظماً بغض النظر عن إعادة تنظيم مكونات واجهة المستخدم وهو أمر قد يكون حتمياً أحياناً.

  • عند إضافة مفتاح عبارة جديد، وبوجه الخصوص قصيراً من (1 أو 2 من الكلمات)، إستقص في ملفات اللغة الموجودة عن احتمالية وجود مفتاح مماثل:
fgrep -l ">العنوان<" `find . -name \*.xml`

(إن > و < المحيطتان بكلمة العنوان تستعملان لتعليم بداية الإدخال ونهايته.)

الدلالات اللغوية #

لا تفترض أن عليك الاعتماد على الدلالات اللغوية الإنجليزية. يمكنك عرض المحتوى بلغة ذات دلالات أخرى تختص بها ليستقيم المعنى بشكل أفضل.

  • إستعمل متغيرات التعويض بدلاً من اللجوء إلى مفاتيح متعددة للعبارات. ما يأتي ينبغي /تجنب/ استعماله:
<message key="some.locale.key1">لديك </message>
<message key="some.locale.key2"> رسائل غير مقروءة.</message>

فبدلاً منه، استعمل:

<message key="some.locale.key">لديك {$numberUnreadMessages} رسائل غير مقروءة.</message>

هذا من شأنه منع المشاكل في عرض العبارات في اللغات ذات المحاذاة من اليمين إلى اليسار ويجعل المحتوى أكثر تنظيماً.

  • كن على حذر عند استعمال نفس مفتاح اللغة في سياقات مختلفة. على سبيل المثال، عبارة “نشط” والتي تظهر أحياناً على الأزرار قد تكون مختلفة فيما لو ظهرت على الملصقات التوضيحية.

الترميز الإبدالي وإرشادات أخرى #

  • معظم المحتوى في ملفات اللغة يهدف إلى الظهور على صفحات الإنترنت وهو بصيغة HTML. وغالباً، فإن بنية HTML هي النصوص الصريحة، لكن هناك اختلافات ظرفية. أدوات العطف عموماً ستحتاج إلى الترميز الإبدالي من أجل إظهارها كما هي، مثلاً Statistics &amp; Reports.

هذا سيظهرها على شاشة المستخدم بشكل “Statistics & Reports”، ما يعني الإظهار الصحيح لعلامة العطف.

  • للكتل الكبيرة من نصوص HTML، إستعمل <![CDATA[ ... ]]>. مثلاً:
<message key="some.big.html"><![CDATA[<p>هذه كتلة كبيرة من المحتوى المكتوب بصيغة <em>HTML</em>.]]\></message>