چیت‌شیت

ابزارهای بومی‌سازی و واژه‌نامه

Localization and Glossary Tools

اجرا، داده‌دهی و بررسی سه پروژه‌ی بومی‌سازی بازنگری‌محور. انتخاب یک مدل چندزبانه و یک زبان مبدأ.

  • ۱۲ بخش
  • ۱ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. سه پروژه در کنار هم
  2. اجرای نسخه‌ی مرجع
  3. ساخت و ارزیابی نسخه‌ی خودتان
  4. پایپ‌لاین میز زیرنویس
  5. ورودی زیرنویس (samples/input.json)
  6. جریان کاری میز کار رشته‌های رابط کاربری
  7. قوانین ناشر واژه‌نامه
  8. پیام‌های خطا و راه‌حل‌ها
  9. پیش‌فرض‌ها و محدودیت‌ها
  10. انتخاب مدل چندزبانه
  11. انتخاب زبان مبدأ
  12. نکات کاربردی

سه پروژه در کنار هم

مقایسه
عاملمیز بومی‌سازی زیرنویسمیز کار بومی‌سازی رشته‌های رابط کاربریناشر کارت‌های هاور واژه‌نامه
خروجی‌های ساخت‏WebVTT بازنگری‌شده و یک میز HTML‏JSON زبان بازنگری‌شده و یک پیش‌نمایشدرسنامه HTML حاشیه‌نویسی‌شده
زبانپایتون 3.10+‏Node نسخه 22.18 یا جدیدتر‏Node نسخه 22.18 یا جدیدتر
کلیدهای ورودیvtt، translations، glossary، cpslocale، messages، proposals، valuesglossary، lesson
خروجی‌هاreview.html، translation-decisions.json، reviewed.vttlocale.json، unresolved-strings.json، report.htmlreport.html، glossary.json، coverage.json
فایل بازنگری--decisions decisions.jsonآرگومان سوم locale-review.jsonندارد
گیت سخت‌گیرانهreviewed.vtt فقط زمانی که تمام کیوها تأیید شوندتأیید فقط بدون هیچ مشکلیزیرمجموعه HTML متوازن

اجرای نسخه‌ی مرجع

دستورها
دستورعملکرد
python3 cli.py samples/input.json --output demo-outputمیز زیرنویس روی نمونه
python3 cli.py <input.json> --output <dir>میز زیرنویس روی ورودی شما
node cli.ts sample.json outputمیز کار رابط کاربری یا ناشر واژه‌نامه
node cli.ts <input.json> <dir> <review.json>میز کار رابط کاربری با بازنگری شما
node cli.ts --helpچاپ خط آرگومان‌ها

ساخت و ارزیابی نسخه‌ی خودتان

کار و کد
وظیفهکد
ایجاد قالب اولیهpython3 scripts/project_test.py <project> --init <dir>
ارزیابی یک مرحلهpython3 scripts/project_test.py <project> --stage 1 --path <dir> --strict
ارزیابی تمام مراحلpython3 scripts/project_test.py <project> --all --path <dir> --strict
ذخیره‌ی گزارش تکمیل--report completion.json
ارزیابی نسخه‌ی مرجعpython3 scripts/project_test.py <project> --all --solution --strict

پایپ‌لاین میز زیرنویس

گام‌به‌گام
  1. parse_vttخواندن WebVTT در قالب کیوها. رشته‌های برچسب زمان را حفظ کرده و به کیوهای بی‌شناسه cue-N اختصاص می‌دهد.
  2. proposeترجمه‌های ارائه‌شده را دریافت می‌کند. اصطلاحات واژه‌نامه مبدأ را به‌ترتیب طولانی‌ترین جایگزین می‌کند.
  3. inspectکاراکترهای مرئی را می‌شمارد و مقدار budget=floor(duration*cps) را تنظیم می‌کند.
  4. export_localizedبازنگری را به یک fingerprint از نوع SHA-256 متشکل از پیشنهادات و cps پیوند می‌دهد.
  5. شمافایل decisions.json را ویرایش کرده، مقدار approved را برای هر کیو تعیین کنید، سپس دوباره با --decisions اجرا کنید.
  6. CLIفایل reviewed.vtt را فقط زمانی می‌نویسد که همه‌ی کیوها تأیید شده باشند.

ورودی زیرنویس (samples/input.json)

کد
text
{
  "vtt": "WEBVTT\n\nmap\n00:00.000 --> 00:03.000\nOpen the map.\n...",
  "translations": {
    "map": "Abre el map.",                            # واژه‌نامه آن را به «Abre el mapa.» تبدیل می‌کند
    "label": "Escribe un nombre descriptivo ..."      # 2 ثانیه با cps برابر 12، بودجه 24
  },
  "glossary": {"map": "mapa", "marker": "marcador"},  # مبدأ به مقصد
  "cps": 12                                           # اختیاری، پیش‌فرض 17 است
}

جریان کاری میز کار رشته‌های رابط کاربری

معماری
پیام‌هاMessage[]Proposal[]کاتالوگحل‌نشدهsample.jsonپیام‌ها، پیشنهاداتreadCatalog()کلیدها، جانگهدارهاproposeTranslations()مشکلات، نیاز به زمینهreviewTranslations()تأیید، رد، در انتظارlocale.jsonرشته‌های تأییدشدهunresolved-strings.jsonکلیدها همراه با دلایل

قوانین ناشر واژه‌نامه

مفهوم‌ها
شناسه اصطلاح
با حروف کوچک، منطبق با ^[a-z][a-z0-9-]*$، و یکتا.
عبارات
یک اصطلاح یا نام مستعار نباید در کل واژه‌نامه تکرار شود، بدون حساسیت به حروف بزرگ و کوچک.
تطبیق
تابع matchTerms() ابتدا طولانی‌ترین عبارت را امتحان می‌کند و به مرزهای کلمات نیاز دارد.
متن نادیده‌گرفته‌شده
متن داخل pre، code و a دست‌نخورده باقی می‌ماند.
ویژگی‌ها
فقط class، id، title، lang و برای a مقدار href.
پیوندها
مقدار href باید با https://، http:// یا # شروع شود.
تعریف
یک دکمه‌ی محلی با aria-expanded یک اسپن با role="note" را نمایش می‌دهد.

پیام‌های خطا و راه‌حل‌ها

عیب‌یابی
  • stale review

    علت
    تغییر پیشنهادات یا cps پس از بازنگری
    راه‌حل
    استفاده از decisions.json جدید حاصل از review.html
  • resolve glossary or acknowledge reading-budget overflow

    علت
    کیوی تأییدشده فاقد یک اصطلاح است یا از بودجه فراتر رفته
    راه‌حل
    اصطلاح را اضافه کنید یا override_budget را برابر true قرار دهید
  • STYLE and REGION are outside the supported subset

    علت
    فایل VTT دارای بلوک‌های STYLE یا REGION است
    راه‌حل
    آن‌ها را حذف کنید. بلوک‌های NOTE نادیده گرفته می‌شوند
  • Placeholder multiset changed

    علت
    ترجمه یک {name} را حذف یا اضافه کرده است
    راه‌حل
    تمام جانگهدار‌های مبدأ را حفظ کنید
  • Stale or invalid translation decision

    علت
    ترجمه بازنگری با پیشنهاد ارائه‌شده همخوانی ندارد
    راه‌حل
    یک locale-review.json جدید دانلود کنید
  • Resolve translation issues or context before approving

    علت
    کلید مبهم تأیید نشده است
    راه‌حل
    مقدار acknowledgeContext را برابر true قرار دهید
  • Ambiguous repeated phrase

    علت
    عبارت یکسان در دو اصطلاح مختلف
    راه‌حل
    به هر عبارت یک اصطلاح اختصاص دهید
  • Unsupported HTML element

    علت
    تگ خارج از زیرمجموعه مجاز است
    راه‌حل
    تنها از تگ‌های فهرست‌شده استفاده کنید

پیش‌فرض‌ها و محدودیت‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
cps17باید مثبت و متناهی باشد
schema_version1در translation-decisions.json
approvedFalseهمه‌ی کیوها در ابتدا تأییدنشده هستند
override_budgetFalseبرای تأیید کیوهای فراتر از بودجه الزامی است
Proposal length2000حداکثر تعداد کاراکتر در هر پیشنهاد
schemaVersion1در locale-review.json الزامی است
Output folderoutputآرگومان دوم در CLIهای Node
Exit code on error2ابزارهای CLI مبتنی بر Node پیام را چاپ می‌کنند

انتخاب مدل چندزبانه

کار و کد
وظیفهکد
دسته‌بندی، 100 زبان`XLM-R-base` fine-tuned
دسته‌بندی صفر-نمونهjoeddav/xlm-roberta-large-xnli
ترجمه، 200 زبانfacebook/nllb-200-distilled-600M
زبان کم‌منبع`XLM-V` or a related-language fine-tune
تعداد دورهای چند-نمونهnum_train_epochs=5
نرخ یادگیری چند-نمونهlearning_rate=2e-5
خط‌های دُم‌دراز (کم‌کاربرد)byte_fallback=True

انتخاب زبان مبدأ

پرسش و پاسخ
آیا انگلیسی همیشه بهترین مبدأ است؟
خیر. شباهت زبانی پیش‌بینی بهتری نسبت به اندازه پیکره متنی برای انتقال ارائه می‌دهد.
زبان مقصد مراتی است؟
تابع rank_source_languages() هندی را بالاتر از انگلیسی قرار می‌دهد.
چند برچسب در زبان مقصد؟
100 تا 500 نمونه، 95 تا 98 درصد خط مبنای انگلیسی را محقق می‌کند.
چرا نرخ یادگیری بالاتر نه؟
هم‌ترازی چندزبانه به یک مدل منحصر به انگلیسی تنزل پیدا می‌کند.
هزینه‌ی باروری توکن‌ها چیست؟
هندی می‌تواند 3 تا 5 برابر انگلیسی به توکن نیاز داشته باشد.

نکات کاربردی

نکته‌ها
  • دقت را به‌ازای هر زبان گزارش کنید. مقادیر تجمیعی بخش دُم‌دراز را پنهان می‌کنند.
  • قبل از آموزش، نرخ باروری توکن‌سازی را روی متن مقصد بررسی کنید.
  • هر ترجمه نیازمند بازنگری انسانی است. ابزارها فقط مشکلات را پرچم‌گذاری می‌کنند.
  • میز کار رابط کاربری از جانگهدار‌های نام‌گذاری‌شده ساده پشتیبانی می‌کند، نه پیام‌های ICU.
  • عبارات واژه‌نامه هرگز از مرز المان‌ها یا موجودیت‌ها عبور نمی‌کنند.
  • فایل HTML به‌صورت محلی اجرا می‌شود و هیچ داده‌ای به سرویس‌های شخص ثالث ارسال نمی‌کند.