رابط برنامهنویسی پایتون¶
رابط عمومی پایدار پایتون از co_op_translator.api صادر میشود. بیشتر یکپارچهسازیها از یکی از این روندها استفاده میکنند:
| سناریو | از این زمانی استفاده کنید | APIهای اصلی |
|---|---|---|
| ترجمه فایلها یا اسناد منفرد | برنامهٔ شما محتوای منبع را میخواند، برای ترجمه به Co-op Translator فراخوانی میکند و تصمیم میگیرد نتیجه را کجا ذخیره کند. | translate_markdown_content, translate_notebook_content, translate_image_content, rewrite_markdown_paths, rewrite_notebook_paths |
| آمادهسازی محتوا برای ترجمه توسط عامل میزبان | میزبان MCP یا مدل برنامهٔ شما قطعات را ترجمه خواهد کرد، در حالی که Co-op Translator تقسیمبندی و بازسازی را مدیریت میکند. | start_markdown_agent_translation, finish_markdown_agent_translation, start_notebook_agent_translation, finish_notebook_agent_translation |
| ترجمه یک مخزن کامل | میخواهید API پایتون مانند CLI رفتار کند و کشف فایلها، مسیرهای خروجی، متادیتا، پاکسازی و نوشتنها را مدیریت کند. | run_translation |
اکثر ماژولهای سطح پایین تحت core، config، review و utils جزئیات پیادهسازی هستند که توسط این نقاط ورود API استفاده میشوند.
کلاینتهای MCP از همان API عمومی از طریق سرور MCP استفاده میکنند. هنگام فراخوانی مستقیم پایتون از این صفحه استفاده کنید، و هنگام در معرض قرار دادن Co-op Translator به یک عامل یا ویرایشگر از راهنمای MCP استفاده کنید. اگر بین CLI، API پایتون، و MCP تصمیم میگیرید، با روند کاری خود را انتخاب کنید شروع کنید.
روند اولیهٔ API¶
اگر Co-op Translator را از کد پایتون فراخوانی میکنید، از اینجا شروع کنید:
- یک ارائهدهنده LLM را مطابق توضیحات در پیکربندی پیکربندی کنید، مگر اینکه تنها در حال آمادهسازی قطعات Markdown یا دفترچه برای ترجمه توسط عامل میزبان باشید.
- تصمیم بگیرید آیا برنامهٔ شما مسئول ورودی/خروجی فایل است.
- وقتی برنامهٔ شما فایلهای منفرد را میخواند و مینویسد، از APIهای محتوا استفاده کنید.
- هنگامی که Co-op Translator باید یک مخزن را مانند CLI پردازش کند، از
run_translationاستفاده کنید. - اگر به بررسیهای قطعی در اتوماسیون نیاز دارید، پس از ترجمه از
run_reviewاستفاده کنید.
| هدف | API برای شروع |
|---|---|
| ترجمه یک رشته یا فایل Markdown | translate_markdown_content |
| ترجمه محتوای یک دفترچه | translate_notebook_content |
| ترجمه یک تصویر | translate_image_content |
| اجازه دهید یک عامل میزبان قطعات Markdown یا دفترچه را ترجمه کند | start_markdown_agent_translation یا start_notebook_agent_translation |
| بازنویسی لینکهای ترجمهشده پس از انتخاب مسیر خروجی | rewrite_markdown_paths یا rewrite_notebook_paths |
| ترجمه یک مخزن کامل | run_translation |
| بازبینی خروجی ترجمهشده | run_review |
سناریو ۱: ترجمه فایلها یا اسناد منفرد¶
از این روند زمانی استفاده کنید که قبلاً یک فایل، بافر ویرایشگر، محتوای دفترچه، درخواست MCP، یا ورودی خط لولهٔ سفارشی را دارید. کد شما مسئول ورودی/خروجی فایل است:
- محتوای منبع را بخوانید.
- یک API ترجمهٔ محتوا را فراخوانی کنید.
- در صورت تمایل، یک API بازنویسی مسیر را فراخوانی کنید اگر محتوای ترجمهشده قرار است در یک پوشهٔ ترجمهٔ پروژه نوشته شود.
- نتیجه را در برنامهٔ خود ذخیره یا بازگردانید.
APIهای ترجمهٔ محتوا کشف پروژه را اجرا نمیکنند، متادیتا نمینویسند، اظهارات سلب مسؤولیت را الصاق نمیکنند و بهطور خودکار لینکها را بازنویسی نمیکنند.
فایل Markdown¶
import asyncio
from pathlib import Path
from co_op_translator.api import (
rewrite_markdown_paths,
translate_markdown_content,
)
async def main() -> None:
source_path = Path("docs/guide.md")
target_path = Path("translations/ko/docs/guide.md")
translated = await translate_markdown_content(
source_path.read_text(encoding="utf-8"),
"ko",
{"source_path": source_path},
)
rewritten = rewrite_markdown_paths(
translated,
source_path=source_path,
target_path=target_path,
policy={
"language_code": "ko",
"root_dir": ".",
"translations_dir": "translations",
"translated_images_dir": "translated_images",
"translation_types": ["markdown", "images"],
},
)
target_path.parent.mkdir(parents=True, exist_ok=True)
target_path.write_text(rewritten, encoding="utf-8")
asyncio.run(main())
اگر Markdown ترجمهشده در ساختار پروژهٔ Co-op Translator قرار نخواهد گرفت، rewrite_markdown_paths را رد کنید و رشتهٔ ترجمهشده را مستقیماً ذخیره کنید.
فایل دفترچه¶
import asyncio
from pathlib import Path
from co_op_translator.api import (
rewrite_notebook_paths,
translate_notebook_content,
)
async def main() -> None:
source_path = Path("docs/tutorial.ipynb")
target_path = Path("translations/ja/docs/tutorial.ipynb")
translated_json = await translate_notebook_content(
source_path.read_text(encoding="utf-8"),
"ja",
{"source_path": source_path},
)
rewritten_json = rewrite_notebook_paths(
translated_json,
source_path=source_path,
target_path=target_path,
policy={
"language_code": "ja",
"root_dir": ".",
"translations_dir": "translations",
"translated_images_dir": "translated_images",
"translation_types": ["notebook", "images"],
},
)
target_path.parent.mkdir(parents=True, exist_ok=True)
target_path.write_text(rewritten_json, encoding="utf-8")
asyncio.run(main())
translate_notebook_content سلولهای Markdown را ترجمه میکند و سلولهای غیر-Markdown را حفظ میکند. بازنویسی مسیر تنها به سلولهای Markdown اعمال میشود.
فایل تصویر¶
from pathlib import Path
from co_op_translator.api import translate_image_content
source_path = Path("docs/images/hero.png")
target_path = Path("translated_images/fr/hero.png")
translated_image = translate_image_content(
source_path,
"fr",
{
"root_dir": ".",
"fast_mode": False,
},
)
target_path.parent.mkdir(parents=True, exist_ok=True)
translated_image.save(target_path)
translate_image_content تصویر منبع را میخواند و یک PIL.Image.Image رندر شده بازمیگرداند. متادیتای تصویر ترجمهشده را نمینویسد.
سناریو ۲: ترجمه یک مخزن کامل¶
از این روند زمانی استفاده کنید که میخواهید API پایتون مانند CLI translate رفتار کند. run_translation فایلهای پشتیبانیشده را کشف میکند، انواع محتوای انتخابشده را ترجمه میکند، مسیرها را بازنویسی میکند، فایلهای خروجی را مینویسد، متادیتا را بهروز میکند و وظایف نگهداری ترجمه مانند پاکسازی را انجام میدهد.
run_translation نقطهٔ ورود ارجح برای هماهنگی پروژه است. translate_project بهعنوان یک نام مستعار سازگاری با همان رفتار صادر شده است.
فایلهای Markdown را در مخزن فعلی به کرهای و ژاپنی ترجمه کنید:
from co_op_translator.api import run_translation
run_translation(
language_codes="ko ja",
markdown=True,
)
فقط دفترچهها را از ریشهٔ پروژهٔ مشخص ترجمه کنید:
from co_op_translator.api import run_translation
run_translation(
language_codes="fr",
root_dir="./my-course",
notebook=True,
)
پیشنمایش حجم ترجمه بدون نوشتن فایلها:
from co_op_translator.api import run_translation
run_translation(
language_codes="es de",
root_dir="./my-course",
markdown=True,
dry_run=True,
)
ثبت رویدادهای پیشرفت ساختارمند برای یک یکپارچهسازی:
from co_op_translator.api import TranslationEvent, run_translation
def on_event(event: TranslationEvent) -> None:
payload = event.to_dict()
# پیلود را در جدول رویدادهای شغل خود ذخیره کنید یا آن را به رابط کاربریتان به صورت جریان پخش کنید.
run_translation(
language_codes="ko ja",
root_dir="./my-course",
markdown=True,
notebook=True,
progress_callback=on_event,
)
رویدادها از اسکیمای نسخهبندیشدهٔ co-op.translation.event.v1 استفاده میکنند. یکپارچهسازیها باید
به فیلدهای ثابت مانند type و stage_key وابسته باشند،
نه به متن کنسول قابلفهم برای انسان یا stage_label.
چندین ریشهٔ محتوا را در یک فراخوانی ترجمه کنید:
from co_op_translator.api import run_translation
run_translation(
language_codes="ko",
markdown=True,
root_dirs=["./docs", "./labs"],
)
نوشتن ترجمهها در گروههای خروجی صریح:
from co_op_translator.api import run_translation
run_translation(
language_codes="ja",
markdown=True,
groups=[
("./course-a", "./localized/course-a"),
("./course-b", "./localized/course-b"),
],
)
از نگهدارندهٔ مخصوص هر زبان استفاده کنید وقتی هر زبان باید یک زیرپوشهٔ تو در تو داشته باشد:
from co_op_translator.api import run_translation
run_translation(
language_codes="ko",
markdown=True,
groups=[
("./course", "./translations/<lang>/course"),
],
)
اگر هیچیک از markdown، notebook یا images تنظیم نشده باشند، API تمام انواع پشتیبانیشده را ترجمه میکند: Markdown، دفترچهها، و تصاویر.
حفظ ویرایشهای پذیرفتهشدهٔ انسانی با یک ارائهدهندهٔ وضعیت ترجمه¶
بهطور پیشفرض، Co-op Translator رفتار سطح-فایل موجود خود را حفظ میکند: زمانی که یک
منبع Markdown قدیمی باشد، کل فایل ترجمهشده بازتولید میشود. یکپارچهسازیهای میزبانیشده
میتوانند اختیاری یک TranslationStateProvider ارسال کنند تا ویرایشهای انسانی را
در بلوکهای منبعی که تغییر نکردهاند حفظ کنند.
این ارائهدهنده جفت منبع/هدف پذیرفتهشدهٔ آخر را فراهم میکند و هر نامزد جدید را ثبت میکند نامزد. پذیرش همچنان مسئولیت یکپارچهسازی است—برای مثال، پس از ادغام یک pull request ترجمه:
from pathlib import Path
from co_op_translator.api import (
TranslationBaseline,
TranslationUpdate,
run_translation,
)
class DatabaseTranslationState:
def load_baseline(
self,
*,
source_path: Path,
translation_path: Path,
language_code: str,
) -> TranslationBaseline | None:
row = load_accepted_translation(
source_path=source_path,
translation_path=translation_path,
language_code=language_code,
)
if row is None:
return None
return TranslationBaseline(
source_text=row.source_text,
target_text=row.target_text,
revision=row.accepted_revision,
)
def record_candidate(
self,
*,
source_path: Path,
translation_path: Path,
language_code: str,
source_text: str,
target_text: str,
update: TranslationUpdate,
) -> None:
save_translation_candidate(
source_path=source_path,
translation_path=translation_path,
language_code=language_code,
source_text=source_text,
target_text=target_text,
mode=update.mode,
fallback_reason=update.fallback_reason,
)
run_translation(
language_codes="ko",
root_dir="./course",
markdown=True,
translation_state_provider=DatabaseTranslationState(),
)
برای فایلهای Markdown با یک خط مبنای پذیرفتهشدهٔ معتبر، Co-op Translator بلوکهای سطحبالای Markdown را تراز میکند. بلوکهای منبع بدون تغییر از بلوکهای ترجمهشدهٔ فعلی استفاده میکنند، از جمله ویرایشهای انجامشده توسط افراد؛ بلوکهای منبع تغییرکرده یا اضافهشده برای ترجمه ارسال میشوند برای ترجمه؛ بلوکهای منبع حذفشده حذف میشوند. اگر تراز مبهم باشد، ساختار هدف تغییر کرده باشد، ترجمهٔ یک بلوک نامعتبر باشد، یا هیچ خط مبنایی موجود نباشد، Co-op Translator بهطور ایمن به مسیر ترجمهٔ کامل فایل موجود بازمیگردد.
بخشها بین اسناد. در حال حاضر این برای ترجمهٔ پروژههای Markdown اعمال میشود.
رفتار دفترچه و تصویر بدون تغییر است. ارسال update=True
هنوز درخواست بازتولید کامل را میدهد.
RuntimeError پس از پایان جریان کاری پروژه پرتاب میکند بهجای گزارش یک
اجرای موفق با خروجی مفقود.
یکپارچهسازیها باید این را بهعنوان یک کار ناموفق در نظر بگیرند
و وضعیت ترجمهٔ پذیرفتهشدهٔ قبلی را حفظ کنند.
بازبینی خروجی ترجمهشده¶
run_review بررسیهای ترجمهٔ قطعی را بدون اعتبارنامهٔ LLM یا Vision اجرا میکند.
بتا
run_review یک API بازبینی قطعی در حالت بتا است. این API فراخوانی ارائهدهندگان مدل را انجام نمیدهد یا فایلها را نمینویسد، اما بررسیها و اسکیمای مسائل ممکن است تغییر کنند.
from co_op_translator.api import run_review
run_review(
language_codes="ko ja",
root_dir="./my-course",
markdown=True,
notebook=True,
)
پس از ترجمهای که فقط README را شامل میشود، از همان دامنه برای بازبینی استفاده کنید:
readme_only=True تنها README.md را تحت هر ریشهٔ منبع پیکربندیشده بررسی میکند،
شامل groups سفارشی و دایرکتوریهای خروجی. سایر اسناد و READMEهای تو در تو مستثنا هستند.
نبودن README منبع باعث پرتاب ValueError میشود؛ بررسیهای ترجمه ناموفق
منجر به پرتاب RuntimeError میشوند.
فقط فایلهایی را که نسبت به یک مرجع پایه تغییر کردهاند بازبینی کنید و خروجی با فرمت GitHub را چاپ کنید:
from co_op_translator.api import run_review
run_review(
language_codes="ko",
root_dir="./my-course",
markdown=True,
notebook=True,
changed_from="origin/main",
output_format="github",
)
مثالهای قابل کپی-پیست API¶
محتوای Markdown را بدون نوشتن فایل ترجمه کنید:
import asyncio
from co_op_translator.api import translate_markdown_content
async def main() -> None:
translated = await translate_markdown_content(
"# Hello\n\nWelcome to the course.",
"ko",
)
print(translated)
asyncio.run(main())
ترجمه و بازنویسی لینکهای Markdown:
import asyncio
from co_op_translator.api import rewrite_markdown_paths, translate_markdown_content
async def main() -> None:
translated = await translate_markdown_content(
"[Setup](../setup.md)\n\n",
"ko",
{"source_path": "docs/guide.md"},
)
rewritten = rewrite_markdown_paths(
translated,
source_path="docs/guide.md",
target_path="translations/ko/docs/guide.md",
policy={
"language_code": "ko",
"root_dir": ".",
"translations_dir": "translations",
"translated_images_dir": "translated_images",
"translation_types": ["markdown", "images"],
},
)
print(rewritten)
asyncio.run(main())
ترجمه یک مخزن از پایتون:
from co_op_translator.api import run_translation
run_translation(
language_codes="ko ja",
root_dir="./course",
markdown=True,
yes=True,
)
ترجمه چندین ریشه:
from co_op_translator.api import run_translation
run_translation(
language_codes="ko",
markdown=True,
root_dirs=[
"./docs",
"./labs",
],
)
حفظ اصطلاحات واژهنامه:
from co_op_translator.api import run_translation
run_translation(
language_codes="fr",
markdown=True,
glossaries=[
"Co-op Translator",
"Azure AI Foundry",
"GitHub Actions",
],
)
نقاط ورود عمومی¶
from co_op_translator.api import (
ImageTranslationOptions,
MarkdownTranslationOptions,
NotebookTranslationOptions,
TranslationBaseline,
TranslationStateProvider,
TranslationUpdate,
finish_markdown_agent_translation,
finish_notebook_agent_translation,
run_review,
run_translation,
rewrite_markdown_paths,
rewrite_notebook_paths,
start_markdown_agent_translation,
start_notebook_agent_translation,
translate_image_content,
translate_markdown_content,
translate_notebook_content,
translate_project,
)
co_op_translator.api.translate_markdown_content
async
¶
translate_markdown_content(document: str, language_code: str, options: MarkdownTranslationOptions | Mapping[str, object] | None = None) -> str
Translate markdown content without project path rewriting or file I/O.
co_op_translator.api.translate_notebook_content
async
¶
translate_notebook_content(notebook: str | dict[str, object], language_code: str, options: NotebookTranslationOptions | Mapping[str, object] | None = None) -> str
Translate notebook markdown cells without project path rewriting or file I/O.
co_op_translator.api.translate_image_content ¶
translate_image_content(image_path: str | Path, language_code: str, options: ImageTranslationOptions | Mapping[str, object] | None = None) -> Image.Image
Translate image text and return a rendered image without saving metadata.
co_op_translator.api.start_markdown_agent_translation ¶
start_markdown_agent_translation(document: str, language_code: str, source_path: str | Path | None = None) -> dict[str, object]
Prepare provider-free Markdown chunks for host-agent translation.
co_op_translator.api.finish_markdown_agent_translation ¶
finish_markdown_agent_translation(job: Mapping[str, object], translated_chunks: Mapping[str, object] | list[Mapping[str, object]]) -> dict[str, object]
Reconstruct Markdown from chunks translated by a host agent.
co_op_translator.api.start_notebook_agent_translation ¶
start_notebook_agent_translation(notebook: str | Mapping[str, object], language_code: str, source_path: str | Path | None = None) -> dict[str, object]
Prepare provider-free notebook Markdown chunks for host-agent translation.
co_op_translator.api.finish_notebook_agent_translation ¶
finish_notebook_agent_translation(job: Mapping[str, object], translated_chunks: Mapping[str, object] | list[Mapping[str, object]]) -> dict[str, object]
Reconstruct a notebook from Markdown chunks translated by a host agent.
co_op_translator.api.rewrite_markdown_paths ¶
rewrite_markdown_paths(content: str, source_path: str | Path, target_path: str | Path, policy: MarkdownPathRewritePolicy | Mapping[str, object]) -> str
Rewrite markdown/frontmatter paths for a translated project target.
co_op_translator.api.rewrite_notebook_paths ¶
rewrite_notebook_paths(content: str, source_path: str | Path, target_path: str | Path, policy: MarkdownPathRewritePolicy | Mapping[str, object]) -> str
Rewrite markdown-cell paths for a translated project notebook target.
co_op_translator.api.MarkdownTranslationOptions
dataclass
¶
Options for content-only markdown translation.
co_op_translator.api.NotebookTranslationOptions
dataclass
¶
Options for content-only notebook translation.
co_op_translator.api.ImageTranslationOptions
dataclass
¶
Options for content-only image translation.
co_op_translator.api.TranslationBaseline
dataclass
¶
Previously accepted source and target content for one translated file.
co_op_translator.api.TranslationStateProvider ¶
Bases: Protocol
Optional persistence boundary for translation baselines.
Co-op Translator deliberately does not prescribe a database or storage format. Hosted products can implement this protocol, while existing CLI users continue to use the normal file-level retranslation behavior when no provider is passed.
load_baseline ¶
load_baseline(*, source_path: Path, translation_path: Path, language_code: str) -> TranslationBaseline | None
Return the last accepted source/target pair, if one is available.
record_candidate ¶
record_candidate(*, source_path: Path, translation_path: Path, language_code: str, source_text: str, target_text: str, update: TranslationUpdate) -> None
Record a generated candidate without marking it as accepted.
co_op_translator.api.TranslationUpdate
dataclass
¶
Outcome of an incremental translation attempt.
co_op_translator.api.run_translation ¶
run_translation(language_codes: str, root_dir: str = '.', update: bool = False, images: bool = False, markdown: bool = False, notebook: bool = False, debug: bool = False, save_logs: bool = False, yes: bool = True, add_disclaimer: bool = False, translations_dir: str | None = None, image_dir: str | None = None, root_dirs: Iterable[str] | None = None, groups: Iterable[tuple[str, str | None]] | None = None, repo_url: str | None = None, glossaries: Iterable[str] | None = None, readme_only: bool = False, dry_run: bool = False, progress_callback: TranslationEventCallback | None = None, json_events_path: str | Path | None = None, translation_state_provider: TranslationStateProvider | None = None, concurrency: int = 1, source: str | Path | None = None, output: str | Path | None = None, include: Iterable[str] | None = None, exclude: Iterable[str] | None = None, context: str | None = None, context_file: str | Path | None = None, plan_json_path: str | Path | None = None) -> tuple[int, int]
Programmatic translation entrypoint mirroring the translate CLI options.
progress_callback receives versioned TranslationEvent objects for
integration code. json_events_path writes the same events as NDJSON except
during a dry run, when file output is disabled.
plan_json_path writes a versioned plan and remains enabled during dry runs.
A dry run performs local discovery and estimation without provider credentials,
connectivity checks, or translation output writes.
translation_state_provider lets hosted integrations supply accepted
source/target baselines and receive generated candidates. When omitted,
Markdown translation keeps the existing full-file behavior.
concurrency limits simultaneous text file/language translations within
each stage and defaults to sequential execution. Images are unaffected.
co_op_translator.api.translate_project ¶
Programmatic project translation entrypoint.
co_op_translator.api.run_review ¶
run_review(language_codes: str | Iterable[str] = 'all', root_dir: str = '.', update: bool = False, images: bool = False, markdown: bool = False, notebook: bool = False, debug: bool = False, save_logs: bool = False, yes: bool = True, add_disclaimer: bool = False, translations_dir: str | None = None, image_dir: str | None = None, root_dirs: Iterable[str] | None = None, groups: Iterable[tuple[str, str | None]] | None = None, repo_url: str | None = None, glossaries: Iterable[str] | None = None, dry_run: bool = False, changed_from: str | None = None, output_format: str = 'text', fail_on_warnings: bool = False, readme_only: bool = False, source: str | Path | None = None, output: str | Path | None = None, include: Iterable[str] | None = None, exclude: Iterable[str] | None = None) -> ReviewSummary
Programmatic deterministic review entrypoint.
The signature intentionally mirrors run_translation where possible so
automation can switch between translate and review workflows with minimal
branching. Review ignores mutating translation-only options such as
update, yes, add_disclaimer, repo_url, glossaries, and
dry_run.
Set readme_only=True to review only README.md under each source root.
APIهای ترجمه محتوا¶
APIهای ترجمهٔ محتوا برای یکپارچهسازیهایی در نظر گرفته شدهاند که قبلاً محتوا را در حافظه دارند، مانند افزونهٔ ویرایشگر، ابزار MCP، پردازشگر دفترچه، یا خط لولهٔ سفارشی.
| تابع | ورودی | خروجی | ورودی/خروجی فایل | یادداشتها |
|---|---|---|---|---|
translate_markdown_content |
Markdown str |
Markdown str |
خیر | غیرهمزمان. تنها محتوای Markdown را ترجمه میکند. لینکها را بازنویسی نمیکند، متادیتا را نمینویسد، یا اظهارات سلب مسئولیت را الصاق نمیکند. |
translate_notebook_content |
Notebook JSON str or dict |
Notebook JSON str |
خیر | غیرهمزمان. سلولهای Markdown را ترجمه میکند و سلولهای غیر-Markdown را حفظ میکند. لینکها را بازنویسی نمیکند، متادیتا را نمینویسد، یا اظهارات سلب مسئولیت را الصاق نمیکند. |
translate_image_content |
Image path | PIL.Image.Image |
فقط تصویر منبع را میخواند | همزمان. متن تصویر را استخراج و ترجمه میکند، سپس یک تصویر رندرشده بازمیگرداند. متادیتای تصویر ترجمهشده را ذخیره نمیکند. |
translate_markdown_content و translate_notebook_content یک source_path اختیاری را از طریق گزینههای خود میپذیرند. مسیر بهعنوان زمینه به مترجم منتقل میشود؛ فراخوانندهها همچنان مسئول هر بازنویسی مسیر خاص پروژه پس از ترجمه هستند.
from co_op_translator.api import MarkdownTranslationOptions, translate_markdown_content
translated = await translate_markdown_content(
document,
"ko",
MarkdownTranslationOptions(source_path="docs/guide.md"),
)
همان گزینهها میتوانند بهصورت دیکشنری ارسال شوند:
APIهای ترجمه با کمک عامل¶
APIهای با کمک عامل فراخوانی ارائهدهندهٔ LLM پیکربندیشده از Co-op Translator را انجام نمیدهند. آنها قطعات Markdown یا دفترچه را برای ترجمه توسط عامل میزبان آماده میکنند، سپس محتوای نهایی را از قطعات ترجمهشده بازسازی میکنند.
| تابع | هدف |
|---|---|
start_markdown_agent_translation |
بازگرداندن یک کار Markdown خودکفا با قطعات، پرامپتها و وضعیت بازسازی. |
finish_markdown_agent_translation |
بازسازی Markdown از یک کار و قطعات ترجمهشده توسط عامل میزبان. |
start_notebook_agent_translation |
بازگرداندن یک کار دفترچه با قطعات سلولهای Markdown برای ترجمه توسط عامل میزبان. |
finish_notebook_agent_translation |
بازسازی JSON دفترچه در حالی که سلولهای کد، خروجیها و متادیتا را حفظ میکند. |
این روند عمدتاً برای میزبانهای MCP در نظر گرفته شده است. اگر به ترجمهٔ مخزن تولیدی نیاز دارید که Co-op Translator فراخوانیهای ارائهدهنده را مدیریت کند، از translate_markdown_content، translate_notebook_content، یا run_translation استفاده کنید.
APIهای بازنویسی مسیر¶
APIهای بازنویسی مسیر هیچ ترجمهای انجام نمیدهند. آنها لینکها و مسیرهای frontmatter را پس از اینکه فراخوانندهها مسیر منبع، مسیر هدف ترجمهشده و ساختار پروژه را بدانند بهروزرسانی میکنند.
| تابع | دامنه | یادداشتها |
|---|---|---|
rewrite_markdown_paths |
Markdown body and frontmatter | لینکهای Markdown و فیلدهای مسیر frontmatter پشتیبانیشده را برای یک هدف ترجمهشده بازنویسی میکند. |
rewrite_notebook_paths |
Markdown cells in notebook JSON | بازنویسی مسیر Markdown را به هر سلول Markdown اعمال میکند و سلولهای غیر-Markdown را بدون تغییر رها میکند. |
آرگومان policy ممکن است یک دیکشنری با این فیلدها باشد:
| فیلد | الزامی | هدف |
|---|---|---|
language_code |
بله | کد زبان هدف، مانند "ko" یا "pt-BR". |
root_dir |
خیر | ریشهٔ پروژه منبع. مقدار پیشفرض ".". |
translations_dir |
خیر | دایرکتوری خروجی ترجمهٔ متن. مقدار پیشفرض translations زیر root_dir. |
translated_images_dir |
خیر | دایرکتوری خروجی تصاویر ترجمهشده. مقدار پیشفرض translated_images زیر root_dir. |
translation_types |
خیر | انواع ترجمهٔ فعال. مقدار پیشفرض Markdown، دفترچهها، و تصاویر. |
lang_subdir |
خیر | زیرپوشهٔ اختیاری تحت هر پوشهٔ زبان. |
پارامترهای ترجمهٔ پروژه¶
| پارامتر | نوع | پیشفرض | هدف |
|---|---|---|---|
language_codes |
str |
الزامی | کدهای زبان هدف جداشده با فاصله، مانند "ko ja fr"، یا "all". کدهای جایگزین به مقادیر استاندارد BCP 47 نرمالسازی میشوند. |
root_dir |
str |
"." |
ریشهٔ پروژه برای یک هدف ترجمهٔ واحد. هنگام ارائهٔ root_dirs یا groups نادیده گرفته میشود. |
update |
bool |
False |
ترجمههای موجود برای زبانهای انتخابشده را حذف و بازایجاد میکند. |
images |
bool |
False |
شامل ترجمهٔ تصویر میشود. نیازمند پیکربندی Azure AI Vision است. |
markdown |
bool |
False |
شامل ترجمهٔ Markdown میشود. |
notebook |
bool |
False |
شامل ترجمهٔ Jupyter notebook میشود. |
debug |
bool |
False |
فعالسازی لاگ دیباگ. |
save_logs |
bool |
False |
ذخیرهٔ فایلهای لاگ با سطح DEBUG در زیرشاخهٔ logs/ ریشه. |
yes |
bool |
True |
پرسشها را برای استفاده برنامهای و CI بهطور خودکار تأیید میکند. |
add_disclaimer |
bool |
False |
افزودن هشدارهای مربوط به ترجمه ماشینی به فایلهای Markdown و نوتبوکهای ترجمهشده. |
translations_dir |
str \| None |
None |
پوشه خروجی سفارشی برای ترجمه متن. مسیرهای نسبی نسبت به هر ریشه حل میشوند. |
image_dir |
str \| None |
None |
پوشه خروجی تصاویر ترجمهشده سفارشی. مسیرهای نسبی نسبت به هر ریشه حل میشوند. |
root_dirs |
Iterable[str] \| None |
None |
چندین ریشه که تنظیمات خروجی یکسانی را بهاشتراک میگذارند. |
groups |
Iterable[tuple[str, str \| None]] \| None |
None |
جفتهای صریح (root_dir, translations_dir). بر root_dirs ارجحیت دارد. |
repo_url |
str \| None |
None |
URL مخزن که هنگام رندر جدول زبان README برای راهنمایی استفاده میشود. |
glossaries |
Iterable[str] \| None |
None |
اصطلاحات واژهنامه که باید در طول ترجمه حفظ شوند. تکراریها و عبارات خالی نرمالسازی میشوند. |
dry_run |
bool |
False |
برآورد حجم ترجمه و پیشنمایش رفتار مهاجرت بدون نوشتن فایلها. |
translation_state_provider |
TranslationStateProvider \| None |
None |
آداپتور اختیاری نگهداری پایگاه-پذیرفتهشده و نامزد برای بهروزرسانیهای افزایشی Markdown. حذف آن رفتار موجود فایل-کامل را حفظ میکند. |
پارامترهای بازبینی¶
run_review عمداً تا حد امکان امضای run_translation را بازتاب میدهد تا اتوماسیون بتواند با حداقل شاخهبندی بین گردشکارهای ترجمه و بازبینی جابهجا شود.
| پارامتر | نوع | پیشفرض | هدف |
|---|---|---|---|
language_codes |
str \| Iterable[str] |
"all" |
پوشههای زبان هدف برای بازبینی. رشتههای جداشده با فاصله و iterableها پذیرفته میشوند. "all" همه زبانهای ترجمه کشفشده را بازبینی میکند. |
root_dir |
str |
"." |
ریشه پروژه برای یک هدف بازبینی واحد. هنگام فراهم بودن root_dirs یا groups نادیده گرفته میشود. |
markdown |
bool |
False |
شامل فایلهای منبع Markdown و MDX باشد. |
notebook |
bool |
False |
شامل فایلهای منبع Jupyter notebook باشد. |
images |
bool |
False |
برای توازن با گزینههای ترجمه محفوظ است. ارجاعات لینکی به تصاویر از Markdown بررسی میشوند. |
translations_dir |
str \| None |
None |
پوشه خروجی سفارشی برای ترجمه متن. مسیرهای نسبی نسبت به هر ریشه حل میشوند. |
root_dirs |
Iterable[str] \| None |
None |
چندین ریشه که تنظیمات خروجی یکسانی را بهاشتراک میگذارند. |
groups |
Iterable[tuple[str, str \| None]] \| None |
None |
جفتهای صریح (root_dir, translations_dir). بر root_dirs ارجحیت دارد. |
changed_from |
str \| None |
None |
مرجع Git که برای محدود کردن بازبینی به فایلهای منبع تغییرکرده استفاده میشود. |
readme_only |
bool |
False |
فقط README.md زیر هر ریشه منبع را بازبینی کند. نبود README منبع منجر به ValueError میشود. |
output_format |
str |
"text" |
فرمت خروجی بازبینی. مقادیر پشتیبانیشده "text" و "github" هستند. |
fail_on_warnings |
bool |
False |
هشدارها را علاوه بر خطاها بهعنوان شکست در نظر بگیرد. |
debug |
bool |
False |
فعالسازی لاگگیری اشکالزدایی. |
save_logs |
bool |
False |
ذخیره فایلهای لاگ در سطح DEBUG زیر پوشه ریشه logs/. |
اگر هیچکدام از markdown، notebook، یا images تنظیم نشده باشند، API در جاهایی که مناسب است Markdown، نوتبوکها و ارجاعات لینک تصویر را بازبینی میکند. بازبینی فراخوانی ارائهدهنده LLM ندارد و به کلیدهای API نیاز ندارد.
نیازمندیهای پیکربندی¶
APIهای ترجمه مبتنی بر ارائهدهنده نیازمند پیکربندی ارائهدهنده قبل از ترجمه هستند:
- ترجمه Markdown و نوتبوک نیاز به یک ارائهدهنده LLM دارد. Azure OpenAI، OpenAI، یا Anthropic را پیکربندی کنید.
- ترجمه تصویر علاوه بر ارائهدهنده LLM نیاز به Azure AI Vision دارد.
run_translationقبل از آغاز ترجمه پروژه بررسیهای اتصال سبک را اجرا میکند.- APIهای کمکی عامل
start_*_agent_translationوfinish_*_agent_translationفراخوانیکنندههای LLM Co-op Translator را صدا نمیزنند. برنامه میزبان یا عامل MCP قطعات آمادهشده را ترجمه میکند. rewrite_markdown_paths،rewrite_notebook_pathsوrun_reviewقطعی هستند و به مدارک ارائهدهنده نیاز ندارند.
متغیرهای موردنیاز Azure OpenAI:
AZURE_OPENAI_API_KEY="..."
AZURE_OPENAI_ENDPOINT="https://<resource>.openai.azure.com/"
AZURE_OPENAI_MODEL_NAME="gpt-4o"
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME="<deployment>"
AZURE_OPENAI_API_VERSION="2024-12-01-preview"
متغیرهای موردنیاز OpenAI:
متغیرهای موردنیاز Anthropic:
ANTHROPIC_BASE_URL و ANTHROPIC_MAX_TOKENS اختیاری هستند. Microsoft Agent Framework از Co-op Translator نسخه 0.22.0 به بعد مشتری مدل پیشفرض برای همه ارائهدهندگان است. Semantic Kernel هنوز را میتوان موقتاً با CO_OP_TRANSLATOR_MODEL_CLIENT="semantic-kernel" انتخاب کرد، اما انجام این کار یک هشدار منسوخسازی صادر میکند؛ طرح حذف تدریجی را در پیکربندی ببینید.
متغیرهای موردنیاز Azure AI Vision برای ترجمه تصویر:
AZURE_AI_SERVICE_API_KEY="..."
AZURE_AI_SERVICE_ENDPOINT="https://<resource>.cognitiveservices.azure.com/"
run_review قطعی است و نیازی به پیکربندی LLM یا Azure AI Vision ندارد.
نکات رفتاری¶
- APIهای ترجمه محتوا ترجمه را از بازنویسی مسیرهای پروژه جدا نگه میدارند. وقتی محتوای ترجمهشده نیاز به تنظیم لینکهای نسبی پروژه برای مکان هدف دارد، بهصراحت
rewrite_markdown_pathsیاrewrite_notebook_pathsرا فراخوانی کنید. - APIهای هماهنگی پروژه رفتارهای پروژه را حول ترجمه محتوا اضافه میکنند، از جمله کشف فایل، نوشتنها، بازنویسی مسیرها، متاداده، پاکسازی و هشدارهای اختیاری.
run_translationپیشرفت و خلاصههای برآورد را از طریق همان گزارشگر مبتنی بر Rich که CLI استفاده میکند چاپ میکند. خروجی غیرتعاملی به متن ساده تنزل مییابد.dry_run=Trueبرآوردها را با استفاده از بروزرسانیهای README مجازی محاسبه میکند، اما README یا فایلهای ترجمه را نمینویسد.groupsبهصورت متوالی پردازش میشوند. یک برآورد تجمعی واحد قبل از شروع کار چاپ میشود.- وقتی ترجمه تصویر انتخاب شده باشد، پیکربندی Vision مفقود قبل از شروع ترجمه خطا ایجاد میکند.
- پوشههای زبان مبتنی بر نامهای مستعار موجود شناسایی میشوند و میتوان آنها را به نامهای پوشه زبان کاننیکال BCP 47 بهعنوان بخشی از اجرا مهاجرت داد.
run_reviewدر صورت فایلهای ترجمهشده مفقود، متاداده ترجمه مفقود یا کهنه، frontmatter/fenceهای کد نامنظم Markdown، و JSON نوتبوک ترجمهشده نامعتبر شکست میخورد.run_reviewبهطور پیشفرض اهداف محلی Markdown و لینکهای تصویر مفقود را بهصورت هشدار گزارش میکند.
مسیر فراخوانی داخلی¶
API به همان پیادهسازی هسته که توسط CLI استفاده میشود واگذار میکند:
ترجمه:
co_op_translator.api.translation.translate_markdown_content,translate_notebook_content, ortranslate_image_contentبرای ترجمه در حافظه. |co_op_translator.api.translation.rewrite_markdown_pathsorrewrite_notebook_pathsبرای پردازش پساز مسیرها بهصورت صریح. |co_op_translator.api.translation.run_translationبرای هماهنگی کامل پروژه. |co_op_translator.config.Config,LLMConfig, andVisionConfig. |co_op_translator.core.project.ProjectTranslator. |co_op_translator.core.project.TranslationManager. |- افزونههای ترجمه متمرکز پروژه برای Markdown، نوتبوکها و تصاویر. |
- مترجمهای Markdown، نوتبوک، متن و تصویر تحت
co_op_translator.core. |
بازبینی:
co_op_translator.api.review.run_review|co_op_translator.review.targets.build_review_targets|co_op_translator.review.runner.ReviewRunner|- چکهای قطعی تحت
co_op_translator.review.checks|
کلاسهای زیر برای نگهدارندگان مفید هستند، اما بهعنوان API پایدار در سطح بسته صادر نمیشوند.
| کلاس | ماژول | مسئولیت |
|---|---|---|
ProjectTranslator |
co_op_translator.core.project.project_translator |
هماهنگکننده ترجمه در سطح پروژه، مدیریت دایرکتوری، نرمالسازی متاداده در هر زبان، و ارجاع به مترجمهای Markdown، نوتبوک و تصویر. |
TranslationManager |
co_op_translator.core.project.translation |
اجرای کار پردازش فایل بهصورت async برای Markdown، نوتبوکها، تصاویر، تشخیص کهنگی، و بهروزرسانی متاداده ترجمه. |
ProjectMarkdownTranslationMixin |
co_op_translator.core.project.translation.project_markdown_translation |
هماهنگی خواندن فایلهای Markdown، ترجمه محتوا، بازنویسی مسیرها، متاداده، هشدارها، و نوشتنها. |
ProjectNotebookTranslationMixin |
co_op_translator.core.project.translation.project_notebook_translation |
هماهنگی خواندن فایلهای نوتبوک، ترجمه سلولهای Markdown، بازنویسی مسیرها، متاداده، هشدارها، و نوشتنها. |
ProjectImageTranslationMixin |
co_op_translator.core.project.translation.project_image_translation |
هماهنگی کشف تصاویر منبع، ترجمه تصویر، مسیرهای خروجی، متاداده، و نوشتنها. |
ProjectEvaluator |
co_op_translator.core.project.project_evaluator |
یافتن جفتهای Markdown ترجمهشده، ارزیابی کیفیت ترجمه، و خواندن متاداده اطمینان برای گردشکارهای تعمیر با اطمینان پایین. |
ReviewRunner |
co_op_translator.review.runner |
هماهنگی چکهای قطعی بازبینی در سراسر فایلهای منبع، زبانهای هدف، و ریشههای ترجمه پیکربندیشده. |
ReviewTarget |
co_op_translator.review.targets |
توصیف یک ریشه منبع و پوشه خروجی ترجمه که برای آن ریشه بازبینی میشود. |
LanguageFolderMigrator |
co_op_translator.core.project.language_migrator |
تشخیص پوشههای زبان قدیمی مبتنی بر نام مستعار و آمادهسازی طرحهای مهاجرت پوشههای کاننیکال BCP 47. |
Config |
co_op_translator.config.base_config |
بارگذاری فایلهای .env و بررسی اینکه آیا ارائهدهندههای LLM مورد نیاز و Vision اختیاری پیکربندی شدهاند. |
LLMConfig |
co_op_translator.config.llm_config.config |
تشخیص خودکار Azure OpenAI، OpenAI، یا Anthropic، اعتبارسنجی متغیرهای محیطی موردنیاز، و اجرای بررسیهای اتصال ارائهدهنده. |
VisionConfig |
co_op_translator.config.vision_config.config |
تشخیص پیکربندی Azure AI Vision و اجرای بررسیهای اتصال برای ترجمه تصویر. |