انتقل إلى المحتوى

ترجمة المحتوى

البدء في الترجمة

إذا كنت ترغب في المساهمة في جهود ترجمة BeeWare، فستحتاج إلى حساب على Weblate. أنشئ حسابًا جديدًا إذا لم يكن لديك حساب حاليًا؛ ثم أخبرنا أنك مهتم بالمساعدة في الترجمة.

هناك خياران لإعلامنا برغبتك في المساعدة في الترجمة:

  • إذا كنت تستخدم Discord، انضم إلى خادم BeeWare، وتوجه إلى قناة #translations.
  • إذا لم تكن مسجلاً في Discord، يمكنك إنشاء مشكلة جديدة في مستودع BeeWare.

في كلتا الحالتين، اترك رسالة تتضمن المعلومات التالية:

  • اسم المستخدم الخاص بك في Weblate
  • اللغة التي تخطط لترجمة المحتوى إليها

بمجرد حصولنا على هذه المعلومات، سنقوم بإضافتك إلى الفريق.

إضافة ترجمة جديدة

إذا كانت اللغة التي تخطط للمساعدة بها غير موجودة بالفعل، فهناك بعض الخطوات الإضافية المطلوبة قبل أن تتمكن من البدء:

  • قم بإنشاء ملف /docs/mkdocs.language-code.yml، مع محتوى خاص باللغة.
  • قم بتحديث ملف tox.ini لتضمين أوامر إنشاء اللغة الجديدة.
  • قم بتحديث /docs/config.yml لتضمين اللغة تحت extra: alternate:.

فيما يلي توضيح للتغييرات اللازمة باستخدام اللغة الألمانية كمثال؛ توجد بالفعل ترجمة ألمانية؛ استبدل الإشارات إلى اللغة الألمانية، de، أو أي محتوى آخر باللغة التي تستهدفها.

ملف تكوين MkDocs جديد

أولاً، قم بإنشاء ملف جديد باسم mkdocs.de.yml في دليل docs، مع المحتوى التالي:

INHERIT: config.yml
site_name: BeeWare Dokumentation
site_url: https://beeware.org/de
docs_dir: de

theme:
  language: de

extra:
  translation_type: machine

إليك ما يحدث في هذا الملف:

  • يرث هذا الملف محتوى التكوين من config.yml.
  • يتم ترجمة قيمة site_name.
  • قيمة site_url هي عنوان URL لموقع المشروع، متبوعًا برمز اللغة.
  • يجب أن يكون docs_dir هو رمز اللغة.
  • يجب أن تكون قيمة theme: language: هي رمز اللغة، كما محدد في سمة MkDocs Material. بالنسبة لمعظم اللغات، سيكون هذا هو نفس رمز اللغة docs_dir؛ ولكن بالنسبة لبعض اللغات (خاصة اللغات التي لها متغيرات محلية مثل zh_CN)، هناك اختلافات.
  • يجب أن يكون extra: translation_type: هو machine حتى تصل الترجمة إلى 100٪ لأول مرة، وعندها يجب أن يكون human. سيعود إلى machine من human إذا تراجع إلى أقل من 90٪.

تحديث tox.ini

ستحتاج إلى إجراء عدة تغييرات على ملف tox.ini.

يمكنك إضافة ما يلي:

  • علامة بيئة رمز اللغة الجديدة في سطر الرأس الذي يبدأ بـ [testenv:docs، مع رمز اللغة مسبوقًا بـ -، بدون مسافات، على سبيل المثال -de.
  • استبعاد رمز اللغة الجديد من الأمر الأول، الذي يبدأ بـ !lint، يسبقه -!، بدون مسافات، على سبيل المثال -!de.
  • رمز اللغة الجديد في نهاية السطر الذي يبدأ بـ translate : build_po_translations.
  • رمز اللغة الجديد في نهاية السطر الذي يبدأ بـ translate : update_machine_translations
  • أمر جديد، يبدأ على سبيل المثال بـ de : build_md_translations للألمانية، بعد الأوامر الأخرى المحددة للغة التي تتطابق مع محتوى تلك الأوامر مع رمز اللغة الجديد.
  • رمز اللغة الجديد في نهاية السطر الذي يبدأ بـ "all,serve :".

تحديث config.yml

أضف اللغة إلى config.yml حتى تظهر في محدد اللغة في العنوان. ابحث عن القسم الذي يبدأ بـ extra:، ثم حدد القسم الفرعي الذي يبدأ بـ alternate:. بالنسبة للألمانية، يمكنك إضافة ما يلي:

    - name: Deutsch
      link: /de/
      lang: de

يجب ترجمة اسم اللغة إلى اللغة. يجب أن يتضمن الرابط علامات /.

اللغة الجديدة جاهزة الآن لبدء الترجمة.

إرشادات الترجمة

بمجرد انضمامك إلى الفريق، حان الوقت لتسجيل الدخول إلى Weblate والبدء في ترجمة السلاسل.

الترجمة الحرفية مقابل الترجمة المعنوية

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

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

هل يجب أن أترجمها؟

يجب عدم ترجمة أو تحديث العناصر التالية:

  • الأوامر. على سبيل المثال، في "يجب عليك تشغيل `briefcase create`."، يجب ترجمة "يجب عليك تشغيل" فقط.
  • مساحات الأسماء، مثل أسماء الفئات أو الطرق أو السمات.
  • عناوين URL للروابط. يجب أن تظهر روابط Markdown القياسية في Weblate على النحو التالي: [نص الرابط]{1}، حيث يمثل الرقم 1 موضع الرابط في السلسلة مع الإشارة إلى الروابط الأخرى المحتملة. إذا تم تضمين عنوان URL الكامل في السلسلة، على النحو التالي: [نص الرابط](https://example.com)، فيجب تخطي عنوان URL للترجمة.
  • روابط مرجعية تحتوي على أسماء فئات أو طرق أو سمات. يجب تركها كما هي، بما في ذلك علامات الاقتباس المائلة. لن يتم ترجمة أي جزء من رابط المثال الموضح هنا.

    [`Class.attribute`][Class.attribute]
    
  • محتوى رابط مرجعي. على سبيل المثال، سيتم تخطي link-content في ما يلي:

    [Link text][link-content]
    
  • توجيهات Jinja. هذا هو أي محتوى محاط بزوجين من الأقواس المتعرجة المتطابقة، أو زوج من الأقواس المتعرجة المفردة المتطابقة مع علامات النسبة المئوية داخل كل طرف. ملاحظة: إدراج مثال على بناء الجملة هنا يؤدي إلى محاولة المكون الإضافي Macros عرضه؛ انظر وثائق Macros للحصول على أمثلة.

  • مثبتات مخصصة. توجد بعد العناوين أو فوق بعض المحتويات، ويتم تنسيقها على النحو التالي: { #anchor }.
  • صيغة التحذير. في المثال التالي، لا ينبغي ترجمة كلمة "admonition" (تحذير). وينطبق هذا على جميع أنواع التحذيرات، بما في ذلك الملاحظات والتحذيرات وما إلى ذلك. انظر القسم التالي للحصول على معلومات حول ترجمة بقية المحتوى.

    /// admonition | Page Title
    
    Content.
    
    ///
    
  • العلامات المائلة. من المفترض أن تظل على شكل علامات مائلة؛ وهي تُستخدم لتنسيق كل من الكود المضمن والكتل البرمجية.

  • صيغة تضمين المحتوى الخارجي. أي شيء موجود في نفس السطر الذي يحتوي على -8<-، أو في الأسطر بين اثنين من -8<- في أسطر منفصلة.

يجب ترجمة العناصر التالية:

  • نص الرابط. في صيغة الرابط، يأتي النص قبل عنوان URL، ويُوضع بين قوسين، كما في [نص الرابط](URL). يجب أن تظهر روابط Markdown القياسية في Weblate على النحو التالي: [نص الرابط]{1}، حيث 1 هو موضع الرابط في السلسلة مع الإشارة إلى الروابط الأخرى المحتملة.
  • نص الرابط المرجعي. على سبيل المثال، سيتم ترجمة Link text على النحو التالي:

    [Link text][link-content]
    
  • عناوين ومحتوى التحذيرات. في مثال التحذير السابق، يجب ترجمة "عنوان الصفحة" و"المحتوى".

Weblate

نحن نستخدم Weblate لترجمة المحتوى الخاص بنا. عندما نضيف ترجمة جديدة، نستخدم DeepL للترجمة الآلية لإنتاج ترجمة أولية. وهذا يعني، عادةً، أن المحتوى الذي ستترجمه قد تمت ترجمته آليًا بالفعل. ومن المتوقع أن تقوم أنت، كمترجم، بمراجعة الترجمة الآلية الحالية وتحريرها وتحسينها.

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

إذا لم تظهر التغييرات بعد ذلك الوقت، فمن المحتمل أن يكون السبب هو وجود خطأ في الترميز، مما أدى إلى فشل إنشاء المستندات لتلك اللغة. أي مشكلة في الترميز في أي سلسلة ستمنع نشر الترجمة بالكامل. يمكنك مراقبة صفحة الإنشاء للغة الخاصة بك لمعرفة ما إذا تم إنشاؤها بنجاح. الرابط مشابه لهذا الرابط لصفحة الإنشاء باللغة الفرنسية https://app.readthedocs.org/projects/beewareorg/; قم بتغيير رمز اللغة إلى لغتك لعرض صفحة البناء المناسبة. سيظهر هذا حالة أحدث بناء للموقع. إذا فشل البناء، انظر إلى سجل البناء، وحاول تحديد مصدر المشكلة.