تخطي إلى المحتوى الرئيسي

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) المخصصة في نفس المشروع:

i18n-rosetta.config.json
{
"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) على أي شيء تريده. فقط ليس على مجموعة الاختبار. :::

هذه دعوة مفتوحة. إذا كنت تعمل مع لغة ذات موارد محدودة — كباحث، أو عضو في المجتمع، أو طالب، أو مجرد شخص مهتم — فقم ببناء طريقة، وشغّل بيئة التقييم، واحصل على أعلى درجة. المشكلة لم تُحل بعد. والبنية التحتية موجودة هنا.

→ عرض لوحة الصدارة


الخطوات التالية

البدء:

تخصيص إعداداتك:

التعمق أكثر: