المساهمة في Co-op Translator
April 7, 2026 · View on GitHub
يرحب هذا المشروع بالمساهمات والاقتراحات. تتطلب معظم المساهمات موافقتك على اتفاقية ترخيص المساهمين (CLA) التي تُصرح بأن لديك الحق، وأنك بالفعل تمنحنا الحقوق لاستخدام مساهمتك. لمزيد من التفاصيل، قم بزيارة https://cla.opensource.microsoft.com.
عند تقديم طلب سحب (Pull Request)، سيقوم بوت CLA تلقائيًا بتحديد ما إذا كنت بحاجة إلى تقديم اتفاقية CLA وتزيين طلب السحب بشكل مناسب (مثل: فحص الحالة، تعليق). ما عليك سوى اتباع التعليمات التي يقدمها البوت. ستحتاج إلى القيام بذلك مرة واحدة فقط عبر جميع المستودعات التي تستخدم اتفاقية CLA الخاصة بنا.
إعداد بيئة التطوير
لإعداد بيئة التطوير لهذا المشروع، نوصي باستخدام Poetry لإدارة التبعيات. نستخدم pyproject.toml لإدارة تبعيات المشروع، ولذلك، لتثبيت التبعيات، يجب عليك استخدام Poetry.
إنشاء بيئة افتراضية
باستخدام pip
python -m venv .venv
باستخدام Poetry
poetry init
تفعيل البيئة الافتراضية
لكل من pip وPoetry
-
ويندوز:
.venv\Scripts\activate.bat -
ماك/لينكس:
source .venv/bin/activate
باستخدام Poetry
poetry shell
تثبيت الحزمة والحزم المطلوبة
باستخدام Poetry (من pyproject.toml)
poetry install
الاختبار اليدوي
قبل تقديم طلب السحب، من المهم اختبار وظيفة الترجمة باستخدام وثائق حقيقية:
-
أنشئ مجلد اختبار في الدليل الجذري:
mkdir test_docs -
انسخ بعض وثائق الماركدوان والصور التي تريد ترجمتها إلى مجلد الاختبار. على سبيل المثال:
cp /path/to/your/docs/*.md test_docs/ cp /path/to/your/images/*.png test_docs/ -
قم بتثبيت الحزمة محليًا:
pip install -e . -
شغّل Co-op Translator على مستندات الاختبار الخاصة بك:
python -m co_op_translator --language-codes ko --root-dir test_docs -
تحقق من الملفات المترجمة في
test_docs/translationsوtest_docs/translated_imagesللتحقق من:- جودة الترجمة
- صحة تعليقات البيانات الوصفية
- الحفاظ على هيكل الماركدوان الأصلي
- عمل الروابط والصور بشكل صحيح
يساعد هذا الاختبار اليدوي على ضمان أن التغييرات التي أجريتها تعمل بشكل جيد في سيناريوهات العالم الحقيقي.
متغيرات البيئة
- أنشئ ملف
.envفي الدليل الجذري عن طريق نسخ ملف.env.templateالمقدم. - املأ متغيرات البيئة حسب الإرشادات.
Tip
خيارات إضافية لبيئة التطوير
بالإضافة إلى تشغيل المشروع محليًا، يمكنك أيضًا استخدام GitHub Codespaces أو VS Code Dev Containers كخيارات بديلة لإعداد بيئة التطوير.
GitHub Codespaces
يمكنك تشغيل هذه العينات افتراضيًا باستخدام GitHub Codespaces ولا حاجة لأي إعدادات إضافية.
الزر سيفتح نسخة VS Code على الويب في متصفحك:
التشغيل محليًا باستخدام VS Code Dev Containers
⚠️ هذا الخيار يعمل فقط إذا كان Docker Desktop مخصصًا له على الأقل 16 جيجابايت من الذاكرة العشوائية. إذا كان لديك أقل من 16 جيجابايت، يمكنك تجربة خيار GitHub Codespaces أو إعداده محليًا.
خيار ذو صلة هو VS Code Dev Containers، الذي سيفتح المشروع في VS Code المحلي باستخدام امتداد Dev Containers:
نمط الكود
نستخدم Black كمنسق كود بايثون للحفاظ على نمط كود متسق عبر المشروع. Black هو منسق كود صارم يعيد تنسيق كود بايثون تلقائيًا ليتوافق مع نمط Black.
التهيئة
تم تحديد تهيئة Black في ملف pyproject.toml الخاص بنا:
[tool.black]
line-length = 88
target-version = ['py310']
include = '\.pyi?$'
تثبيت Black
يمكنك تثبيت Black باستخدام Poetry (موصى به) أو pip:
باستخدام Poetry
يتم تثبيت Black تلقائيًا عند إعداد بيئة التطوير:
poetry install
باستخدام pip
إذا كنت تستخدم pip، يمكنك تثبيت Black مباشرة:
pip install black
استخدام Black
مع Poetry
-
قم بتنسيق جميع ملفات بايثون في المشروع:
poetry run black . -
قم بتنسيق ملف أو مجلد محدد:
poetry run black path/to/file_or_directory
مع pip
-
قم بتنسيق جميع ملفات بايثون في المشروع:
black . -
قم بتنسيق ملف أو مجلد محدد:
black path/to/file_or_directory
Tip
نوصي بضبط محررك ليقوم تلقائيًا بتنسيق الكود باستخدام Black عند الحفظ. معظم المحررات الحديثة تدعم ذلك عبر الإضافات أو البلجنات.
تشغيل Co-op Translator
لتشغيل Co-op Translator باستخدام Poetry في بيئتك، اتبع الخطوات التالية:
-
انتقل إلى الدليل حيث تريد إجراء اختبارات الترجمة أو أنشئ مجلدًا مؤقتًا لأغراض الاختبار.
-
نفذ الأمر التالي. استبدل
-l koبرمز اللغة التي ترغب في الترجمة إليها. العلم-dيشير إلى وضع التصحيح.poetry run co-op-translator translate -l ko -d
Note
تأكد من تفعيل بيئة Poetry الخاصة بك (poetry shell) قبل تشغيل الأمر.
المساهمة بلغة جديدة
نرحب بالمساهمات التي تضيف دعمًا للغات جديدة. قبل فتح طلب سحب، يرجى إكمال الخطوات أدناه لضمان مراجعة سلسة.
-
أضف اللغة إلى تعيين الخطوط
- حرر
src/co_op_translator/fonts/font_language_mappings.yml - أضف إدخالًا يحتوي على:
code: رمز اللغة على غرار ISO (مثلاًvi)name: اسم العرض الودي للبشرfont: خط مرفق فيsrc/co_op_translator/fonts/يدعم النصrtl:trueإذا كانت اللغة تكتب من اليمين إلى اليسار، وإلاfalse
- حرر
-
أدرج ملفات الخطوط المطلوبة (إذا لزم الأمر)
- إذا كان هناك حاجة لخط جديد، تحقق من توافق الترخيص مع التوزيع مفتوح المصدر
- أضف ملف الخط إلى
src/co_op_translator/fonts/
-
التحقق محليًا
- شغّل الترجمات على عينة صغيرة (ماركدوان، صور، ودفاتر ملاحظات حسب الاقتضاء)
- تحقق من أن المخرجات تعرض بشكل صحيح، بما في ذلك الخطوط وأي تخطيط RTL إذا كان ذلك مناسبًا
-
تحديث الوثائق
- تأكد من ظهور اللغة في
getting_started/supported-languages.md - لا حاجة لتغييرات في
getting_started/README_languages_template.md؛ يتم إنشاؤه من القائمة المدعومة
- تأكد من ظهور اللغة في
-
افتح طلب سحب
- وصف اللغة المضافة وأي اعتبارات تتعلق بالخط أو الترخيص
- أرفق لقطات شاشة للمخرجات المعروضة إذا أمكن
مثال على إدخال YAML:
new_lang(code):
name: "New Language"
font: "NotoSans-Medium.ttf"
rtl: false
اختبار اللغة الجديدة
يمكنك اختبار اللغة الجديدة بتشغيل الأمر التالي:
# إنشاء وتفعيل بيئة افتراضية
python -m venv .venv
# ويندوز
.venv\Scripts\activate
# ماك أو إس/لينكس
source .venv/bin/activate
# تثبيت حزمة التطوير
pip install -e .
# تشغيل الترجمة
translate -l "new_lang"
القائمون على الصيانة
رسالة الالتزام واستراتيجية الدمج
لضمان الاتساق والوضوح في سجل الالتزامات الخاص بمشروعنا، نتبع تنسيقًا محددًا لرسائل الالتزام لرسالة الالتزام النهائية عند استخدام استراتيجية Squash and Merge.
عند دمج طلب سحب (PR)، سيتم دمج الالتزامات الفردية في التزام واحد. يجب أن تتبع رسالة الالتزام النهائية التنسيق أدناه للحفاظ على سجل نظيف ومتسق.
تنسيق رسالة الالتزام (لـ squash and merge)
نستخدم التنسيق التالي لرسائل الالتزام:
<type>: <description> (#<رقم PR>)
-
type: يحدد فئة الالتزام. نستخدم الأنواع التالية:
Docs: لتحديثات التوثيق.Build: للتغييرات المتعلقة بنظام البناء أو التبعيات، بما في ذلك تحديثات ملفات التهيئة، سير عمل CI، أو ملف Dockerfile.Core: لتعديلات على الوظائف الأساسية للمشروع أو الميزات، خصوصًا تلك التي تتضمن ملفات فيsrc/co_op_translator/core.
-
description: ملخص موجز للتغيير.
-
PR number: رقم طلب السحب المرتبط بالالتزام.
أمثلة:
Docs: تحديث تعليمات التثبيت لتكون أوضح (#50)Core: تحسين معالجة ترجمة الصور (#60)
Note
حاليًا، تُضاف بادئات Docs، Core، و**Build** تلقائيًا إلى عناوين طلبات السحب بناءً على التصنيفات المطبقة على الكود المصدر المعدل. طالما تم تطبيق التصنيف الصحيح، عادة لا تحتاج إلى تحديث عنوان طلب السحب يدويًا. فقط تحقق من أن كل شيء صحيح وأن البادئة تم إنشاؤها بشكل مناسب.
استراتيجية الدمج
نستخدم Squash and Merge كاستراتيجيتنا الافتراضية لطلبات السحب. تضمن هذه الاستراتيجية أن رسائل الالتزام تتبع تنسيقنا، حتى لو لم تكن الالتزامات الفردية كذلك.
الأسباب:
- سجل مشروع نظيف وخطي.
- اتساق في رسائل الالتزام.
- تقليل الضوضاء من الالتزامات الصغيرة (مثل "تصحيح خطأ مطبعي").
عند الدمج، تأكد من أن رسالة الالتزام النهائية تتبع تنسيق رسالة الالتزام الموضح أعلاه.
مثال على Squash and Merge إذا كان طلب السحب يحتوي على الالتزامات التالية:
fix typoupdate READMEadjust formatting
يجب دمجها في:
Docs: تحسين وضوح وتنسيق التوثيق (#65)
عملية الإصدار
يصف هذا القسم أبسط طريقة للقائمين على الصيانة لنشر إصدار جديد من Co-op Translator.
1. رفع الإصدار في pyproject.toml
- قرر رقم الإصدار التالي (نتبع الترقيم الدلالي:
MAJOR.MINOR.PATCH). - حرر
pyproject.tomlوقم بتحديث حقلversionتحت[tool.poetry]. - افتح طلب سحب مخصص يغير فقط الإصدار (وأي ملفات قفل/بيانات وصفية يتم تحديثها تلقائيًا، إذا وجدت).
- بعد المراجعة، استخدم Squash and Merge وتأكد من أن رسالة الالتزام النهائية تتبع التنسيق الموضح أعلاه.
2. إنشاء إصدار على GitHub
- اذهب إلى صفحة مستودع GitHub وافتح Releases → Draft a new release.
- أنشئ وسمًا جديدًا (مثلاً،
v0.13.0) من فرعmain. - عيّن عنوان الإصدار إلى نفس رقم الإصدار (مثلاً،
v0.13.0). - انقر على Generate release notes لملء سجل التغييرات تلقائيًا.
- اختياريًا، حرر النص (مثلاً، لتسليط الضوء على اللغات المدعومة حديثًا أو التغييرات المهمة).
- انشر الإصدار.
إخلاء المسؤولية:
تمت ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو عدم دقة. يجب اعتبار المستند الأصلي بلغته الأصلية المصدر الموثوق به. للمعلومات الهامة، يُنصح بالاعتماد على الترجمة البشرية المهنية. نحن غير مسؤولين عن أي سوء فهم أو تفسير ناتج عن استخدام هذه الترجمة.