این پروژه از مشارکتها و پیشنهادات استقبال میکند. بیشتر مشارکتها نیازمند آن است که شما با یک توافقنامه مجوز مشارکتکننده (CLA) موافقت کنید که اعلام میکند شما حق دارید و واقعاً به ما اجازه میدهید از مشارکت شما استفاده کنیم. برای جزئیات بیشتر به https://cla.opensource.microsoft.com مراجعه کنید.
وقتی یک pull request ارسال میکنید، یک ربات CLA بهطور خودکار تعیین میکند که آیا نیاز به ارائه CLA دارید و PR را بهطور مناسب علامتگذاری میکند (مثلاً بررسی وضعیت، نظر). کافی است دستورالعملهای ارائه شده توسط ربات را دنبال کنید. شما فقط یک بار در تمام مخازنی که از CLA ما استفاده میکنند، این کار را انجام خواهید داد.
برای راهاندازی محیط توسعه این پروژه، توصیه میکنیم از Poetry برای مدیریت وابستگیها استفاده کنید. ما از pyproject.toml برای مدیریت وابستگیهای پروژه استفاده میکنیم، بنابراین برای نصب وابستگیها باید از Poetry استفاده کنید.
python -m venv .venvpoetry init-
ویندوز:
.venv\Scripts\activate.bat
-
مک/لینوکس:
source .venv/bin/activate
poetry shellpoetry installقبل از ارسال PR، مهم است که عملکرد ترجمه را با مستندات واقعی تست کنید:
-
یک پوشه تست در دایرکتوری ریشه ایجاد کنید:
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 اجرا کنید و نیازی به تنظیمات اضافی نیست.
دکمه زیر یک نسخه وب VS Code را در مرورگر شما باز میکند:
گزینه مرتبط 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 را با استفاده از Poetry (توصیه شده) یا pip نصب کنید:
Black بهطور خودکار هنگام راهاندازی محیط توسعه نصب میشود:
poetry installاگر از pip استفاده میکنید، میتوانید Black را مستقیماً نصب کنید:
pip install black-
تمام فایلهای پایتون پروژه را فرمت کنید:
poetry run black . -
یک فایل یا دایرکتوری خاص را فرمت کنید:
poetry run black path/to/file_or_directory
-
تمام فایلهای پایتون پروژه را فرمت کنید:
black . -
یک فایل یا دایرکتوری خاص را فرمت کنید:
black path/to/file_or_directory
Tip
توصیه میکنیم ویرایشگر خود را طوری تنظیم کنید که هنگام ذخیره، کد را بهطور خودکار با Black فرمت کند. بیشتر ویرایشگرهای مدرن این قابلیت را از طریق افزونهها یا پلاگینها پشتیبانی میکنند.
برای اجرای Co-op Translator با استفاده از Poetry در محیط خود، مراحل زیر را دنبال کنید:
-
به دایرکتوریای که میخواهید تستهای ترجمه را انجام دهید بروید یا یک پوشه موقت برای تست ایجاد کنید.
-
دستور زیر را اجرا کنید.
-l koرا با کد زبان مورد نظر برای ترجمه جایگزین کنید. گزینه-dحالت اشکالزدایی را فعال میکند.poetry run co-op-translator translate -l ko -d
Note
قبل از اجرای دستور، مطمئن شوید محیط Poetry فعال است (poetry shell).
ما از مشارکتهایی که پشتیبانی از زبانهای جدید را اضافه میکنند استقبال میکنیم. قبل از باز کردن PR، لطفاً مراحل زیر را برای اطمینان از بررسی روان انجام دهید.
-
زبان را به نگاشت فونت اضافه کنید
- فایل
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نیست؛ این فایل از لیست پشتیبانی شده تولید میشود
- اطمینان حاصل کنید زبان در
-
باز کردن PR
- زبان اضافه شده و هر نکته مربوط به فونت/مجوز را شرح دهید
- در صورت امکان اسکرینشاتهای خروجی رندر شده را ضمیمه کنید
نمونه ورودی 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 پیروی میکنیم.
وقتی یک pull request (PR) ادغام میشود، کامیتهای جداگانه به یک کامیت واحد فشرده میشوند. پیام کامیت نهایی باید قالب زیر را دنبال کند تا تاریخچه تمیز و یکدستی حفظ شود.
ما از قالب زیر برای پیامهای کامیت استفاده میکنیم:
<type>: <description> (#<شماره PR>)-
type: دستهبندی کامیت را مشخص میکند. ما از انواع زیر استفاده میکنیم:
Docs: برای بهروزرسانیهای مستندات.Build: برای تغییرات مربوط به سیستم ساخت یا وابستگیها، شامل بهروزرسانی فایلهای پیکربندی، گردشهای کاری CI یا Dockerfile.Core: برای تغییرات در عملکرد یا ویژگیهای اصلی پروژه، بهویژه فایلهای داخل دایرکتوریsrc/co_op_translator/core.
-
description: خلاصهای کوتاه از تغییر.
-
PR number: شماره pull request مرتبط با کامیت.
نمونهها:
Docs: Update installation instructions for clarity (#50)Core: Improve handling of image translation (#60)
Note
در حال حاضر، پیشوندهای Docs، Core و Build بهطور خودکار بر اساس برچسبهای اعمال شده روی کد منبع تغییر یافته به عنوان عنوان PR اضافه میشوند. تا زمانی که برچسب صحیح اعمال شده باشد، معمولاً نیازی به بهروزرسانی دستی عنوان PR نیست. فقط کافی است بررسی کنید همه چیز درست است و پیشوند به درستی تولید شده است.
ما بهطور پیشفرض از Squash and Merge برای pull requestها استفاده میکنیم. این استراتژی تضمین میکند که پیامهای کامیت قالب ما را دنبال کنند، حتی اگر کامیتهای جداگانه اینگونه نباشند.
دلایل:
- تاریخچه پروژه تمیز و خطی.
- یکنواختی در پیامهای کامیت.
- کاهش نویز از کامیتهای کوچک (مثلاً "رفع اشتباه تایپی").
هنگام ادغام، مطمئن شوید پیام کامیت نهایی قالب پیام کامیت شرح داده شده را دنبال میکند.
نمونه Squash and Merge اگر PR شامل کامیتهای زیر باشد:
fix typoupdate READMEadjust formatting
باید به صورت زیر فشرده شود:
Docs: Improve documentation clarity and formatting (#65)
این بخش سادهترین روش برای نگهدارندگان را برای انتشار نسخه جدید Co-op Translator شرح میدهد.
- شماره نسخه بعدی را تعیین کنید (ما از نسخهبندی معنایی استفاده میکنیم:
MAJOR.MINOR.PATCH). - فایل
pyproject.tomlرا ویرایش کرده و فیلدversionزیر[tool.poetry]را بهروزرسانی کنید. - یک pull request اختصاصی باز کنید که فقط نسخه (و هر فایل قفل/متادیتای بهروزرسانی شده خودکار، در صورت وجود) را تغییر میدهد.
- پس از بازبینی، از Squash and Merge استفاده کنید و مطمئن شوید پیام کامیت نهایی قالب بالا را دنبال میکند.
- به صفحه مخزن GitHub بروید و Releases → Draft a new release را باز کنید.
- یک تگ جدید (مثلاً
v0.13.0) از شاخهmainایجاد کنید. - عنوان انتشار را همان نسخه قرار دهید (مثلاً
v0.13.0). - روی Generate release notes کلیک کنید تا متن تغییرات بهطور خودکار پر شود.
- در صورت تمایل متن را ویرایش کنید (مثلاً برای برجسته کردن زبانهای جدید پشتیبانی شده یا تغییرات مهم).
- انتشار را منتشر کنید.
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نادرستیهایی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که از استفاده این ترجمه ناشی شود، نیستیم.