i18n-rosetta
إطار عمل دولي (internationalization) قابل للتخصيص بالكامل. أمر واحد يترجم ملفات الترجمة الخاصة بك. ملف إعدادات واحد يتحكم في كل طريقة، ونموذج، وزوج لغوي. وإذا لم تكن الطرق المدمجة كافية — يمكنك بناء طريقتك الخاصة، وإثبات فعاليتها، ثم نشرها.
npx i18n-rosetta sync
يكتشف rosetta تلقائيًا ملفات الترجمة، وتنسيقها، واللغات المستهدفة. يقوم بترجمة ما هو مفقود، ويتخطى ما تم إنجازه، ويتحقق من صحة كل نتيجة، ويكتب مخرجات نظيفة. هذه هي نقطة البداية.
لماذا لا تكتب سكريبت بنفسك؟
يمكنك كتابة حلقة تكرار (loop) سريعة تستدعي Google Translate لكل مفتاح. يفعل معظم المطورين ذلك — يستغرق الأمر حوالي 30 سطرًا. ولكن هنا تكمن المشكلة:
- عدم اكتشاف التغييرات. عند تحديث نص إنجليزي — تظل الترجمة قديمة إلى الأبد. يتتبع rosetta كل قيمة مصدرية باستخدام تجزئات SHA-256 ويعيد ترجمة ما تغير فقط.
- عدم وجود تجميع (Batching). استدعاء API واحد لكل مفتاح يعني 200 مفتاح = 200 طلب ذهاب وإياب. يقوم rosetta بتجميع الطلبات بذكاء (قابل للإعداد، الافتراضي 80 مفتاحًا/دفعة لـ LLM، و128 لـ Google).
- عدم وجود تخزين مؤقت (Caching). كل عملية مزامنة تعيد ترجمة كل شيء. تقوم ذاكرة الترجمة (Translation Memory) في rosetta بتخزين الترجمات مؤقتًا بناءً على النص المصدري + اللغة + الطريقة — إعادة تشغيل المزامنة بعد تغيير مفتاح واحد تترجم هذا المفتاح فقط، وليس الملف بأكمله.
- عدم وجود بوابة جودة. الترجمة الآلية قد تهلوس، أو تعيد النص المصدري كما هو، أو تخرج نصًا بأبجدية خاطئة. يتحقق rosetta من صحة كل ترجمة قبل كتابتها — حيث يتم اكتشاف ورفض الأبجدية الخاطئة، والتضخم في الطول، وتكرار النص المصدري.
- عدم التعرف على التنسيق. هل السكريبت مبرمج للتعامل مع JSON فقط؟ يتعامل rosetta مع JSON، و TOML، و YAML، و Hugo Markdown (البيانات الوصفية + المحتوى) مع ميزة الاكتشاف التلقائي.
- عدم التحكم في الطريقة. يحصل كل زوج لغوي على نفس الطريقة. يتيح لك rosetta استخدام Google Translate للغة الفرنسية، و LLM للغة اليابانية، ومسار عمل (pipeline) مخصص ومستضاف مجتمعيًا للغة Cree — كل ذلك في نفس ملف الإعدادات.
rosetta هو إصدار الإنتاج (production version) من ذلك السكريبت.
ما الذي يجعله مختلفًا
كل طريقة عبارة عن إضافة (Plugin)
طريقة الترجمة قابلة للإعداد لكل زوج لغوي. يمكنك الدمج بين Google Translate، ونماذج LLM، والموجهات الموجهة (coached prompts)، وواجهات برمجة التطبيقات (APIs) المخصصة في نفس المشروع:
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}
تحصل الفرنسية على Google Translate (سريع ورخيص). وتحصل اليابانية على LLM متميز (دقيق التفاصيل). وتحصل لغة Plains Cree على إضافة موجهة تحتوي على قواعد نحوية، وقواميس، وتحقق صرفي. نفس الأمر sync. نفس بوابة الجودة. نفس واجهة سطر الأوامر (CLI).
أثبت ذلك
هل تعتقد أن طريقتك يمكنها الترجمة من الإنجليزية إلى الإسبانية؟ أو من التركية إلى الأذربيجانية؟ أو من الإنجليزية إلى Cree؟
أثبت ذلك. تقوم بيئة التقييم (eval harness) المرافقة بقياس أداء أي طريقة ترجمة مع تسجيل درجات قابلة لإعادة الإنتاج وموثقة. وتقوم لوحة الصدارة (leaderboard) بتتبع كل إرسال.
تشترك بيئة التقييم وواجهة سطر الأوامر (CLI) الخاصة بالإنتاج في نفس واجهة الإضافات (plugin interface). الطريقة التي تسجل درجات جيدة في بيئة التقييم يمكن استخدامها في الإنتاج — إذا وافق المجتمع الذي تخدم لغته على ذلك. بالنسبة للغات الأصلية واللغات ذات الموارد المحدودة، فإن هذه الموافقة مهمة. راجع سيادة البيانات (Data Sovereignty).
# Benchmark your method (in the eval harness repo)
cd gds-mt-eval-harness
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit
# Use it locally
npx i18n-rosetta sync
نفس الإضافة. ركّب واختبر.
مجموعة الأدوات الكاملة
لا يقتصر rosetta على sync فقط. بل هو مسار عمل (pipeline) متكامل للتدويل (i18n):
| الأمر (Command) | وظيفته |
|---|---|
sync | ترجمة المفاتيح المفقودة والقديمة (مع التحقق بعد المزامنة) |
watch | المزامنة التلقائية عند تغير الملف المصدري |
lint | فحص الكود المصدري بحثًا عن النصوص المبرمجة ثابتًا (hardcoded strings) |
wrap | التغليف التلقائي للنصوص المبرمجة ثابتًا في استدعاءات t() |
audit | سرد جميع علامات التراجع (fallback markers) [EN] من عمليات التشغيل السابقة |
verify | التحقق من وجود الترجمات وصحتها (بوابة CI) |
integrity | اكتشاف تلف العناصر النائبة (placeholders)، ومشاكل الترميز، واكتمال صيغ الجمع في ICU |
seo | إنشاء وسوم hreflang، وخرائط الموقع (sitemaps)، ومخطط JSON-LD |
status | عرض إعدادات الأزواج اللغوية، والإضافات، ودرجات التقييم |
provenance | تدقيق تراخيص موارد الترجمة |
plugin | تثبيت، وإزالة، وسرد إضافات طرق الترجمة |
fonts | تنزيل خطوط الويب لمحولات نصوص PUA |
tm | إدارة التخزين المؤقت لذاكرة الترجمة (الإحصائيات، المسح، لكل لغة) |
xliff | تصدير/استيراد XLIFF 1.2 لمراجعة المترجمين المحترفين |
أربعة من هذه الأوامر — lint، sync، verify، audit — تشكل مسار عمل CI يكتشف النصوص المبرمجة ثابتًا، ويترجمها، ويتحقق من صحتها، ويفشل عملية البناء (build) إذا كانت أي لغة غير مكتملة.
الساحة (The Arena)
لوحة صدارة الطرق (Method Leaderboard) هي لوحة النتائج. يتم توثيق كل إرسال بربطه بتأكيد Git (Git commit)، وتعيين إصدار له بناءً على مجموعة بيانات محددة، وتقييمه بواسطة نفس بيئة التقييم. يمكن لأي شخص تقديم إرسال.
ما الذي يمكنك إثباته؟ تقبل بيئة التقييم تنسيق JSON. وتقبل الإضافات تنسيق JSON. يمكن اختبار أي طريقة تنتج JSON:
| النهج (Approach) | مثال |
|---|---|
| LLM موجه (Coached LLM) | حقن القواعد النحوية والقواميس في موجه (prompt) نموذج متقدم |
| نموذج مضبوط بدقة (Fine-tuned model) | تدريب نموذج مفتوح على نصوص متوازية — ولكن ليس على بيانات التقييم |
| مسار عمل محكوم بـ FST | يقوم LLM بالتوليد → يتحقق محول الحالة المحدودة (FST) من الصرف → إعادة المحاولة |
| نماذج متسلسلة (Chained models) | النموذج A يصيغ → النموذج B يحرر لاحقًا → النموذج C يقيّم |
| قاموس + LLM | فرض مصطلحات معروفة من قاموس، وترك LLM يتعامل مع الباقي |
| تطوري (Evolutionary) | توليد مرشحين، وتقييمهم، وتعديل الأفضل، ثم التكرار |
| ترجمة جزئية | ترجمة عينة يدويًا، وإثبات تطابق LLM الخاص بك، ثم الترجمة التلقائية للباقي |
قم بضبط النماذج بدقة (Fine-tune). انشر خوارزميات تطورية. اختبر إجابات الطلاب في امتحانات اللغة. ابنِ جداول بحث (lookup tables). اربط ثلاثة نماذج معًا. طالما أن طريقتك تنتج JSON، فإن بيئة التقييم ستقيمها وسيقوم إطار العمل بتشغيلها.
:::danger القاعدة الوحيدة لا تقم بالتدريب على بيانات التقييم. سيتم استبعاد الطرق التي تعرضت لمجموعة بيانات التقييم (benchmark dataset). قم بالضبط الدقيق (Fine-tune) على أي شيء تريده. فقط ليس على مجموعة الاختبار. :::
هذه دعوة مفتوحة. إذا كنت تعمل مع لغة ذات موارد محدودة — كباحث، أو عضو في المجتمع، أو طالب، أو مجرد شخص مهتم — فقم ببناء طريقة، وشغّل بيئة التقييم، واحصل على أعلى درجة. المشكلة لم تُحل بعد. والبنية التحتية موجودة هنا.
الخطوات التالية
البدء:
- التثبيت (Installation) — الإعداد في دقيقتين
- البدء السريع (Quick Start) — تشغيل أول عملية مزامنة لك
- اللغات المدعومة (Supported Languages) — ما هو متاح جاهزًا للاستخدام
تخصيص إعداداتك:
- طرق الترجمة (Translation Methods) — اختيار الطريقة المناسبة لكل زوج لغوي
- ذاكرة الترجمة (Translation Memory) — كيف يوفر لك التخزين المؤقت المال
- الإعدادات (Configuration) — مرجع الإعدادات الكامل
- موقع Hugo متعدد اللغات (Hugo Multilingual Site) — ترجمة محتوى Markdown
التعمق أكثر:
- العمل مع المترجمين المحترفين — مسار عمل تصدير/استيراد XLIFF
- سيادة البيانات (Data Sovereignty) — مبادئ OCAP، و CARE، وسيادة بيانات الماوري
- دعم لغة ذات موارد محدودة — التحدي الذي بدأ كل شيء
- دليل عملي: مسار عمل محكوم بـ FST — بناء مسار عمل تفكيكي (decomposition pipeline)
- تقييم الترجمة الآلية (MT Evaluation) — كيف تعمل بيئة التقييم ولوحة الصدارة
- لوحة صدارة الطرق (Method Leaderboard) — النتائج المباشرة والإرسالات