پائتھن API¶
مستحکم عوامی Python API کو co_op_translator.api سے برآمد کیا جاتا ہے۔ زیادہ تر انضمام ان میں سے ایک ورک فلو استعمال کرتے ہیں:
| منظر نامہ | اسے کب استعمال کریں | اہم APIs |
|---|---|---|
| انفرادی فائلیں یا دستاویزات ترجمہ کریں | آپ کی ایپلیکیشن ماخذ مواد پڑھتی ہے، 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 |
| مکمل ریپوزٹری کا ترجمہ کریں | آپ چاہتے ہیں کہ Python API CLI کی طرح برتاؤ کرے اور دریافت، آؤٹ پٹ راستے، میٹاڈیٹا، صفائی، اور لکھائی سنبھالے۔ | run_translation |
زیادہ تر نچلے درجے کے ماڈیولز جو core, config, review, اور utils کے تحت آتے ہیں، ان API اندراج پوائنٹس کے لیے استعمال ہونے والی عملدرآمدی تفصیلات ہیں۔
MCP کلائنٹس وہی پبلک API MCP سرور کے ذریعے استعمال کرتے ہیں۔ جب آپ Python کو براہِ راست کال کر رہے ہوں تو اس صفحے کا استعمال کریں، اور جب Co-op Translator کو کسی ایجنٹ یا ایڈیٹر کے سامنے ظاہر کر رہے ہوں تو MCP گائیڈ استعمال کریں۔ اگر آپ CLI، Python API، اور MCP کے درمیان فیصلہ کر رہے ہیں، تو اپنا ورک فلو منتخب کریں سے شروعات کریں۔
پہلی بار API فلو¶
اگر آپ Python کوڈ سے Co-op Translator کال کر رہے ہیں تو یہاں سے شروع کریں:
- LLM فراہم کنندہ کو Configuration میں بیان کے مطابق ترتیب دیں، جب تک کہ آپ صرف Markdown یا نوٹ بک چنکس کو ہوسٹ-ایجنٹ کے ترجمے کے لیے تیار نہیں کر رہے ہوں۔
- فیصلہ کریں کہ آیا آپ کی ایپلیکیشن فائل I/O کی ملکیت رکھتی ہے۔
- جب آپ کی ایپلیکیشن انفرادی فائلیں پڑھتی اور لکھتی ہو تو کنٹینٹ APIs استعمال کریں۔
- جب Co-op Translator کو CLI کی طرح ریپوزٹری پروسیس کرنا چاہیے تو
run_translationاستعمال کریں۔ - اگر آپ کو آٹومیشن میں متعین (deterministic) چیکس کی ضرورت ہو تو ترجمے کے بعد
run_reviewاستعمال کریں۔
| مقصد | شروع کرنے کے لیے API |
|---|---|
| ایک Markdown سٹرنگ یا فائل ترجمہ کریں | translate_markdown_content |
| ایک نوٹ بک پیلوڈ ترجمہ کریں | translate_notebook_content |
| ایک تصویر ترجمہ کریں | translate_image_content |
| ہوسٹ ایجنٹ کو Markdown یا نوٹ بک چنکس کا ترجمہ کرنے دیں | start_markdown_agent_translation or start_notebook_agent_translation |
| آؤٹ پٹ راستہ منتخب کرنے کے بعد ترجمہ شدہ لنکس کو دوبارہ لکھیں | rewrite_markdown_paths or rewrite_notebook_paths |
| مکمل ریپوزٹری ترجمہ کریں | run_translation |
| ترجمہ شدہ آؤٹ پٹ کا جائزہ لیں | run_review |
منظر نامہ 1: انفرادی فائلیں یا دستاویزات کا ترجمہ¶
جب آپ کے پاس پہلے سے فائل، ایڈیٹر بفر، نوٹ بک پیلوڈ، MCP ریکوئسٹ، یا کسٹم پائپ لائن ان پٹ موجود ہو تو یہ ورک فلو استعمال کریں۔ آپ کا کوڈ فائل I/O کا مالک ہے:
- ماخذ مواد پڑھیں۔
- کنٹینٹ ترجمہ API کو کال کریں۔
- اگر ترجمہ شدہ مواد پروجیکٹ کے ترجمہ فولڈر میں لکھا جائے گا تو اختیاری طور پر پاتھ ری رائٹنگ API کو کال کریں۔
- نتیجہ اپنی ایپلیکیشن میں محفوظ کریں یا واپس کریں۔
کنٹینٹ ترجمہ APIs پروجیکٹ کی دریافت نہیں چلائیں گی، میٹاڈیٹا نہیں لکھیں گی، ڈس کلائمرز شامل نہیں کریں گی، اور خود کار طریقے سے لنکس کو دوبارہ نہیں لکھیں گی۔
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 واپس کرتا ہے۔ یہ ترجمہ شدہ تصویر کا میٹاڈیٹا نہیں لکھتا۔
منظر نامہ 2: مکمل ریپوزٹری کا ترجمہ¶
جب آپ چاہتے ہیں کہ Python API translate CLI کی طرح برتاؤ کرے تو یہ ورک فلو استعمال کریں۔ 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 پاس کر سکتی ہیں تاکہ انسانی
ترمیمات اُن سورس بلاکس میں محفوظ رکھی جائیں جو تبدیل نہیں ہوئے۔
پرووائیڈر آخری قبول شدہ ماخذ/ہدف جوڑی فراہم کرتا ہے اور ہر نئے امیدوار (candidate) کو ریکارڈ کرتا ہے۔ قبولیت انٹیگریشن کی ذمہ داری ہی رہتی ہے—مثال کے طور پر، جب ایک ترجمے کا پل ریکویسٹ مرج ہو جائے:
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 محفوظ طریقے سے موجودہ پورے فائل کے ترجمے کے راستے پر واپس آ جاتا ہے۔
یہ API دستاویزاتی ترجمے کی حالت محفوظ کرتی ہے، نہ کہ دستاویزات کے مابین کسی فریز یا
حصہ وار ترجمہ میموری۔ یہ فی الحال Markdown پروجیکٹ ترجمہ پر لاگو ہوتا ہے
۔ نوٹ بک اور تصویر کا طرزِ عمل تبدیل نہیں ہوتا۔ update=True پاس کرنا
اب بھی مکمل دوبارہ جنریشن کی درخواست کرتا ہے۔
اگر ایک یا زیادہ فائلیں ترجمہ نہیں ہو سکتیں، تو run_translation پروجیکٹ ورک فلو ختم ہونے کے بعد
RuntimeError پھینکے گا بجائے اس کے کہ وہ کامیاب رن رپورٹ کرے جس میں آؤٹ پٹ غائب ہو۔
انٹیگریشنز کو اسے ایک ناکام جاب سمجھنا چاہیے اور
پچھلی قبول شدہ ترجمہ حالت کو برقرار رکھنا چاہیے۔
ترجمہ شدہ آؤٹ پٹ کا جائزہ¶
run_review بغیر LLM یا Vision کریڈینشلز کے متعین (deterministic) ترجمہ چیکس چلاتا ہے۔
Beta
run_review ایک بیٹا متعین ریویو 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 اور آؤٹ پٹ ڈائریکٹریز۔ دیگر دستاویزات اور نیسٹڈ
READMEs کو خارج کیا جاتا ہے۔ ایک غائب ماخذ 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())
Python سے ایک ریپوزٹری کا ترجمہ کریں:
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.
کنٹینٹ ترجمہ APIs¶
کنٹینٹ ترجمہ APIs ان انٹیگریشنز کے لیے ہیں جن کے پاس پہلے سے ہی مواد میموری میں موجود ہوتا ہے، جیسے کہ ایک ایڈیٹر ایکسٹینشن، MCP ٹول، نوٹ بک پروسیسر، یا کسٹم پائپ لائن۔
| فنکشن | ان پٹ | آؤٹ پٹ | فائل I/O | نوٹس |
|---|---|---|---|---|
translate_markdown_content |
Markdown str |
Markdown str |
No | غیر متزامن۔ صرف Markdown مواد کا ترجمہ کرتا ہے۔ یہ لنکس کو دوبارہ نہیں لکھتا، میٹاڈیٹا نہیں لکھتا، یا ڈس کلیمرز شامل نہیں کرتا۔ |
translate_notebook_content |
Notebook JSON str or dict |
Notebook JSON str |
No | غیر متزامن۔ 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"),
)
ایک ہی آپشنز ڈکشنریز کے طور پر بھی پاس کیے جا سکتے ہیں:
ایجنٹ مدد یافتہ ترجمہ APIs¶
ایجنٹ-مدد یافتہ APIs Co-op Translator سے کنفیگر کردہ LLM پرووائیڈر کو کال نہیں کرتیں۔ یہ ہوسٹ ایجنٹ کے ترجمے کے لیے 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 استعمال کریں۔
پاتھ ری رائٹنگ APIs¶
پاتھ ری رائٹنگ APIs کوئی ترجمہ انجام نہیں دیتیں۔ وہ لنکس اور فرنٹ میٹر پاتھز کو اپ ڈیٹ کرتی ہیں جب کال کرنے والے ماخذ پاتھ، ترجمہ شدہ ہدف پاتھ، اور پروجیکٹ لے آؤٹ جان لیں۔
| فنکشن | دائرہ کار | نوٹس |
|---|---|---|
rewrite_markdown_paths |
Markdown باڈی اور فرنٹ میٹر | ترجمہ شدہ ہدف کے لیے Markdown لنکس اور سپورٹڈ فرنٹ میٹر پاتھ فیلڈز کو دوبارہ لکھتا ہے۔ |
rewrite_notebook_paths |
نوٹ بک JSON میں Markdown سیلز | ہر Markdown سیل پر Markdown پاتھ ری رائٹنگ لاگو کرتا ہے اور غیر-Markdown سیلز کو تبدیل کیے بغیر چھوڑ دیتا ہے۔ |
policy دلیل ایک ڈکشنری ہو سکتی ہے جس میں یہ فیلڈز ہیں:
| فیلڈ | ضروری | مقصد |
|---|---|---|
language_code |
Yes | ہدف زبان کا کوڈ، مثلاً "ko" یا "pt-BR"۔ |
root_dir |
No | سورس پروجیکٹ روٹ۔ ڈیفالٹ "." ہے۔ |
translations_dir |
No | متن ترجمہ آؤٹ پٹ ڈائریکٹری۔ ڈیفالٹ translations ہے جو root_dir کے تحت ہے۔ |
translated_images_dir |
No | ترجمہ شدہ تصویر آؤٹ پٹ ڈائریکٹری۔ ڈیفالٹ translated_images ہے جو root_dir کے تحت ہے۔ |
translation_types |
No | فعال ترجمہ کی اقسام۔ ڈیفالٹ Markdown، نوٹ بکس، اور تصاویر ہیں۔ |
lang_subdir |
No | ہر زبان کے فولڈر کے تحت ایک اختیاری سب ڈائریکٹری۔ |
پروجیکٹ ترجمہ پیرامیٹرز¶
| پیرا میٹر | قسم | ڈیفالٹ | مقصد |
|---|---|---|---|
language_codes |
str |
Required | ہدف زبان کے کوڈز جو اسپیس سے الگ کیے گئے ہوں، جیسا کہ "ko ja fr"، یا "all"۔ عرفی کوڈز canonical 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 نوٹ بک ترجمہ شامل کریں۔ |
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 |
README زبان کی جدول کی رہنمائی کو رینڈر کرتے وقت استعمال ہونے والا ریپوزٹری URL۔ |
glossaries |
Iterable[str] \| None |
None |
ترجمے کے دوران محفوظ رکھنے کے لیے گلاسری اصطلاحات۔ نقل شدہ اور خالی اصطلاحات کو معمول کے مطابق یکساں بنایا جاتا ہے۔ |
dry_run |
bool |
False |
فائلیں لکھے بغیر ترجمے کے حجم کا اندازہ لگائیں اور مائیگریشن کے طرز عمل کا پیش منظر دیکھیں۔ |
translation_state_provider |
TranslationStateProvider \| None |
None |
مرحلہ وار Markdown اپڈیٹس کے لیے اختیاری accepted-baseline and candidate persistence adapter۔ اسے چھوڑنے سے موجودہ مکمل-فائل رویہ برقرار رہتا ہے۔ |
جائزہ کے پیرامیٹرز¶
run_review جان بوجھ کر run_translation کے دستخط کی عکاسی کرتا ہے جہاں ممکن ہو تاکہ خودکار عمل کم شاخ بندی کے ساتھ ترجمہ اور جائزہ ورک فلو کے درمیان سوئچ کر سکے۔
| پیرامیٹر | قسم | ڈیفالٹ | مقصد |
|---|---|---|---|
language_codes |
str \| Iterable[str] |
"all" |
جائزہ لینے کے لیے ہدف زبان کے فولڈرز۔ خالی جگہ سے جدا کردہ سٹرنگز اور تکرار پذیر قبول کیے جاتے ہیں۔ "all" ہر دریافت شدہ ترجمہ زبان کا جائزہ لیتا ہے۔ |
root_dir |
str |
"." |
ایک جائزہ ہدف کے لیے پروجیکٹ روٹ۔ جب root_dirs یا groups مہیا کیے جائیں تو نظر انداز کیا جاتا ہے۔ |
markdown |
bool |
False |
Markdown اور MDX سورس فائلز شامل کریں۔ |
notebook |
bool |
False |
Jupyter نوٹ بک سورس فائلز شامل کریں۔ |
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 |
روٹ logs/ ڈائریکٹری کے تحت DEBUG سطح کی لاگ فائلیں محفوظ کریں۔ |
اگر markdown، notebook، یا images میں سے کوئی سیٹ نہیں ہے، تو API جہاں لاگو ہو Markdown، نوٹ بکس، اور تصویر کے لنک حوالہ جات کا جائزہ لیتا ہے۔ جائزہ LLM پرووائیڈر کو کال نہیں کرتا اور API keys کی ضرورت نہیں ہوتی۔
کنفیگریشن کی ضروریات¶
پرووائیڈر سے وابستہ ترجمہ APIs ترجمہ شروع کرنے سے پہلے پرووائیڈر کنفیگریشن کی ضرورت رکھتے ہیں:
- Markdown اور نوٹ بک کے ترجمے کے لیے LLM پرووائیڈر درکار ہے۔ Azure OpenAI، OpenAI، یا Anthropic کو کنفیگر کریں۔
- تصویر کے ترجمے کے لیے LLM پرووائیڈر کے علاوہ Azure AI Vision درکار ہے۔
run_translationپروجیکٹ کے ترجمے کے آغاز سے پہلے ہلکے وزن کی کنیکٹیویٹی چیکس چلتا ہے۔- ایجنٹ معاونت یافتہ
start_*_agent_translationاورfinish_*_agent_translationAPIs Co-op Translator LLM پرووائیڈرز کو کال نہیں کرتے۔ ہوسٹ ایپلیکیشن یا 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" کے ساتھ منتخب کیا جا سکتا ہے، لیکن ایسا کرنے پر استعمال ختم ہونے کی وارننگ آتی ہے؛ مرحلہ وار ہٹانے کے منصوبے کے لیے configuration دیکھیں۔
تصویری ترجمے کے لیے ضروری Azure AI Vision متغیرات:
AZURE_AI_SERVICE_API_KEY="..."
AZURE_AI_SERVICE_ENDPOINT="https://<resource>.cognitiveservices.azure.com/"
run_review قطعی (deterministic) ہے اور اسے LLM یا Azure AI Vision کنفیگریشن کی ضرورت نہیں ہوتی۔
طرزِ عمل کے نوٹس¶
- مواد کے ترجمے والی APIs ترجمہ کو پروجیکٹ راستہ دوبارہ لکھنے سے الگ رکھتی ہیں۔ جب ترجمہ شدہ مواد کے لیے پروجیکٹ نسبی لنکس کو کسی ہدف مقام کے مطابق ایڈجسٹ کرنے کی ضرورت ہو تو واضح طور پر
rewrite_markdown_pathsیاrewrite_notebook_pathsکال کریں۔ - پروجیکٹ آرکسٹریشن APIs مواد کے ترجمے کے گرد پروجیکٹ کے رویے شامل کرتی ہیں، جن میں فائل کی دریافت، لکھائی، راستے کی دوبارہ تحریر، میٹاڈیٹا، صفائی، اور اختیاری ڈسکلیمرز شامل ہیں۔
run_translationوہی Rich-بیکڈ رپورٹر استعمال کرتے ہوئے ترقی اور اندازے کے خلاصے پرنٹ کرتا ہے جو CLI استعمال کرتا ہے۔ غیر تعاملی آؤٹ پٹ سادہ متن پر واپس آ جاتا ہے۔dry_run=Trueورچوئل README اپڈیٹس استعمال کرتے ہوئے اندازے کا حساب کرتا ہے، لیکن README یا ترجمہ شدہ فائلیں لکھتا نہیں ہے۔groupsترتیب وار پروسیس ہوتے ہیں۔ کام شروع ہونے سے پہلے ایک واحد مجموعی اندازہ پرنٹ کیا جاتا ہے۔- جب تصویر کا ترجمہ منتخب کیا جاتا ہے تو Vision کنفیگریشن کی عدم موجودگی ترجمہ شروع ہونے سے پہلے ایک ایرر اٹھاتی ہے۔
- موجودہ عرفی بنیاد زبان فولڈرز کا پتہ لگایا جاتا ہے اور انہیں رن کے حصے کے طور پر معیاری BCP 47 فولڈر ناموں میں منتقل کیا جا سکتا ہے۔
run_reviewگم شدہ ترجمہ شدہ فائلوں، گم یا فرسودہ ترجمہ میٹا ڈیٹا، خراب شکل والا Markdown frontmatter/code fences، اور غیر معتبر ترجمہ شدہ نوٹ بک JSON پر ناکام ہوتا ہے۔run_reviewمقامی Markdown اور تصویر لنک اہداف کی عدم موجودگی کو بطورِ ڈیفالٹ وارننگز کے طور پر رپورٹ کرتا ہے۔
داخلی کال پاتھ¶
API اسی بنیادی نفاذ کو تفویض کرتی ہے جو CLI استعمال کرتا ہے:
ترجمہ:
- میموری میں ترجمے کے لیے
co_op_translator.api.translation.translate_markdown_content,translate_notebook_content, یاtranslate_image_content۔ - واضح راستے کی بعد از عمل پروسیسنگ کے لیے
co_op_translator.api.translation.rewrite_markdown_pathsیاrewrite_notebook_paths۔ - مکمل پروجیکٹ آرکسٹریشن کے لیے
co_op_translator.api.translation.run_translation۔ co_op_translator.config.Config,LLMConfig, اورVisionConfig۔co_op_translator.core.project.ProjectTranslator۔co_op_translator.core.project.TranslationManager۔- Markdown، نوٹ بکس، اور تصاویر کے لیے مرکوز پروجیکٹ ترجمہ میکسنز۔
co_op_translator.coreکے تحت Markdown، نوٹ بک، متن، اور تصویر کے مترجم۔
جائزہ:
co_op_translator.api.review.run_reviewco_op_translator.review.targets.build_review_targetsco_op_translator.review.runner.ReviewRunnerco_op_translator.review.checksکے تحت قطعی چیکس
ذیل کی کلاسیں مینٹینرز کے لیے مفید ہیں، لیکن پیکیج-سطح کے مستحکم API کے طور پر ایکسپورٹ نہیں کی جاتیں۔
| کلاس | ماڈیول | ذمہ داری |
|---|---|---|
ProjectTranslator |
co_op_translator.core.project.project_translator |
پروجیکٹ سطح پر ترجمہ، ڈائریکٹری مینیجمنٹ، فی زبان میٹاڈیٹا کی معمول سازی، اور Markdown، نوٹ بک، اور تصویر کے مترجمین کو تفویض کرتا ہے۔ |
TranslationManager |
co_op_translator.core.project.translation |
Markdown، نوٹ بکس، تصاویر، فرسودہ شناخت، اور ترجمے کے میٹاڈیٹا اپڈیٹس کے لیے async فائل پروسیسنگ کا کام انجام دیتا ہے۔ |
ProjectMarkdownTranslationMixin |
co_op_translator.core.project.translation.project_markdown_translation |
Markdown فائل ریڈز، مواد کا ترجمہ، راستے کی دوبارہ تحریر، میٹاڈیٹا، ڈسکلیمرز، اور لکھنے کا بندوبست کرتا ہے۔ |
ProjectNotebookTranslationMixin |
co_op_translator.core.project.translation.project_notebook_translation |
نوٹ بک فائل ریڈز، Markdown-cell کا ترجمہ، راستے کی دوبارہ تحریر، میٹاڈیٹا، ڈسکلیمرز، اور لکھنے کا بندوبست کرتا ہے۔ |
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 کنفیگریشن کا پتہ لگاتا ہے اور تصویری ترجمے کے لیے کنیکٹیویٹی چیکس چلائے۔ |