الانتقال إلى المحتوى الرئيسي

دليل الوكيل: استخدام champollion

champollion هو أداة سطر أوامر (CLI) تترجم ملفات اللغات في تطبيقك بأمر واحد. هذا الدليل موجَّه لوكلاء الذكاء الاصطناعي (أو المطورين الذين يعملون مع وكلاء ذكاء اصطناعي) الذين يريدون الانتقال من الصفر إلى ملفات لغات مترجمة بسرعة.

:::tip هل أنت على دراية مسبقة؟ إذا كنت تحتاج فقط إلى الأوامر، انتقل إلى مرجع CLI. وإذا كنت تريد بناء طريقة ترجمة وقياس أدائها، راجع دليل وكيل Arena. :::


إعداد البيئة

# No global install needed — npx runs it directly
npx champollion sync

المتطلبات:

  • Node.js 18 أو أحدث
  • مفتاح API لمزوّد الترجمة الخاص بك

إعداد مفتاح API — يحتاج champollion إلى مفتاح واحد على الأقل حسب الطرق التي تستخدمها:

# Option 1: export (session only)
export OPENROUTER_API_KEY="sk-or-..." # for llm / llm-coached methods
export GOOGLE_TRANSLATE_API_KEY="AIza..." # for google-translate method

# Option 2: .env file in your project root (persistent, gitignored)
echo 'OPENROUTER_API_KEY=sk-or-...' > .env

يقرأ Champollion .env تلقائيًا. احصل على مفتاح OpenRouter من openrouter.ai/keys.


أول مزامنة

يكتشف Champollion تلقائيًا ملفات اللغات لديك، وصيغتها (JSON أو TOML أو YAML أو PO)، واللغات المستهدفة:

npx champollion sync

ما الذي يحدث:

  1. يحمّل champollion.config.json (أو يكتشف الإعدادات تلقائيًا)
  2. يفحص ملف اللغة المصدر لديك ويسطّح المفاتيح المتداخلة
  3. يقارن مع .champollion.lock (تجزئات SHA-256 للقيم المترجمة سابقًا)
  4. يفحص .champollion/tm.json بحثًا عن ترجمات مخزّنة مؤقتًا (ذاكرة الترجمة)
  5. يترجم فقط المفاتيح المتغيّرة أو المفقودة أو القديمة عبر الطريقة المُهيَّأة
  6. يشغّل بوابة الجودة (5 فحوصات) على كل ترجمة
  7. يكتب الترجمات الناجحة في ملف اللغة المستهدف
  8. يحدّث ملف القفل وذاكرة الترجمة المؤقتة

في إعادة تشغيل نموذجية بعد تغيير مفتاح واحد، تخدم الخطوة 4 ما عدده 142 مفتاحًا من الذاكرة المؤقتة وتترجم الخطوة 5 مفتاحًا واحدًا. لهذا السبب تكون المزامنات اللاحقة سريعة ومنخفضة التكلفة.


الإعدادات

أنشئ champollion.config.json في جذر مشروعك:

{
"inputLocale": "en",
"pairs": {
"en-fr": { "method": "llm-coached" },
"en-ja": { "method": "google-translate" },
"en-crk": { "method": "api", "endpoint": "http://localhost:3000/translate" }
}
}

الحقول الرئيسية:

الحقلالغرضالقيمة الافتراضية
inputLocaleاللغة المصدرen
pairsخريطة المصدر→الهدف مع إعدادات الطريقة(مطلوب)
localesDirموقع ملفات اللغات(يُكتشَف تلقائيًا)
modelنموذج LLM لطريقتي llm/llm-coachedgoogle/gemini-2.5-flash
batchSizeعدد المفاتيح لكل استدعاء API80 (LLM)، 128 (Google)
jsonConcurrencyترجمات اللغات المتوازية لمفاتيح JSON200
contentConcurrencyاستدعاءات API المتوازية لترجمة المحتوى48

المرجع الكامل: الإعدادات


طرق الترجمة

الطريقةمتى تُستخدمالتكلفةمفتاح API المطلوب
llmللأغراض العامة، مناسبة للغات ذات الموارد الوفيرةلكل رمز (حسب النموذج)OPENROUTER_API_KEY
llm-coachedعندما تتوفر لديك قواعد نحوية/قاموس للغة المستهدفةلكل رمز + سياق التوجيهOPENROUTER_API_KEY
google-translateاللغات ذات الموارد العالية التي تعمل GT معها جيدًا20 دولارًا لكل مليون حرفGOOGLE_TRANSLATE_API_KEY
apiخط معالجة مخصص مستضاف خلف نقطة نهاية HTTPيحدّدها الخادملا شيء (نقطة النهاية تتولى المصادقة)
pluginطريقة مُعدّة مسبقًا ومثبّتة محليًامتفاوتةمتفاوت

التفاصيل: طرق الترجمة


بيانات التوجيه

لأزواج llm-coached، توجّه بيانات التوجيه نموذج LLM بمعرفة لغوية صريحة. أنشئ ملف توجيه:

coaching/fr.json
{
"grammar_rules": [
"Use formal register (vous) for all UI text",
"Adjectives agree in gender and number with the noun"
],
"dictionary": {
"dashboard": "tableau de bord",
"settings": "paramètres"
},
"style_notes": "Prefer active voice. Avoid anglicisms."
}

أشِر إليه في إعدادات الزوج الخاص بك:

"en-fr": { "method": "llm-coached", "coachingFile": "coaching/fr.json" }

تتحقق بوابة الجودة من أن مصطلحات القاموس تظهر فعلًا في المخرجات — وتُسجَّل الانتهاكات كتحذيرات [TERM].

التفاصيل: بيانات التوجيه


بوابة الجودة

تمر كل ترجمة عبر خمسة فحوصات آلية قبل كتابتها على القرص:

الفحصما الذي يلتقطهمثال
فارغ/خالٍلم يُرجِع النموذج شيئًا""
صدى المصدرأرجع النموذج المُدخَل الإنجليزي دون تغيير"Welcome" لليابانية
حلقة هلوسةثلاثيات متكررة"Qo' Qo' Qo' Qo'"
تضخم الطولالمخرجات أطول من المصدر بأربعة أضعاف أو أكثرمصدر من 10 أحرف → مخرجات من 50 حرفًا
مطابقة نظام الكتابةنظام كتابة خاطئ للّغةنص لاتيني للغة العربية

تُسجَّل حالات الفشل ببادئة [GATE]. لا توجد بدائل صامتة — إذا فشلت ترجمة، يتم الإبلاغ عنها، ولا تُقبَل بصمت.

التفاصيل: بوابة الجودة


ذاكرة الترجمة

يخزّن Champollion الترجمات مؤقتًا في .champollion/tm.json، مفهرسة حسب النص المصدر + اللغة + الطريقة. في المزامنات اللاحقة، تُخدَم المفاتيح غير المتغيّرة من الذاكرة المؤقتة — بلا استدعاء API ولا تكلفة.

[TM] 142 key(s) served from cache
Translating 3 key(s) to French (llm)... [OK]

لتجاوز الذاكرة المؤقتة لتشغيلة واحدة: npx champollion sync --no-tm

التفاصيل: ذاكرة الترجمة


الملفات المُنشأة

ينشئ Champollion عدة ملفات في مشروعك. تعرّف عليها كي لا تحذف أو تُدرِج في Git الملفات الخاطئة عن طريق الخطأ:

الملفالغرضGit؟
.champollion.lockتجزئات SHA-256 لقيم المصدر المترجمة (اكتشاف التغييرات)نعم — أدرِجه في Git
.champollion-content.lockنفس الشيء، لكن لملفات محتوى Markdown/MDXنعم — أدرِجه في Git
.champollion/tm.jsonذاكرة الترجمة المؤقتةنعم — أدرِجه في Git (يوفّر تكاليف API للفريق)
.champollion/coaching/مجلد بيانات التوجيهنعم — هذه معرفتك اللغوية
champollion.config.jsonإعدادات المشروعنعم — أدرِجه في Git

الأنماط الشائعة

ترجمة زوج لغوي واحد:

npx champollion sync --pair en-fr

ترجمة جميع الأزواج المُهيَّأة:

npx champollion sync

يترجم Champollion جميع اللغات بشكل متوازٍ. مع التخزين المؤقت في ذاكرة الترجمة، تصل المفاتيح المتغيّرة فقط إلى واجهة API.

وضع المحتوى (Markdown/MDX لـ Docusaurus وHugo وغيرهما):

npx champollion sync --content

يترجم الوثائق والمقالات وملفات المحتوى إلى جانب ملفات JSON للّغات. يستخدم التزامن المتوازي (افتراضيًا: 48 استدعاء API متزامنًا). اضبطه باستخدام --content-concurrency.

تشغيل تجريبي (معاينة دون كتابة):

npx champollion sync --dry-run

إجبار إعادة ترجمة مفاتيح محددة:

npx champollion sync --force-keys "hero.title,nav.about"

إجبار إعادة ترجمة جميع ملفات المحتوى:

npx champollion sync --force-content

التحقق من حالة الترجمة:

npx champollion status

يعرض التغطية ومستويات الجودة ومعلومات الإضافات لكل زوج.

تدقيق القيم الاحتياطية غير المترجمة:

npx champollion audit

يسرد جميع القيم الاحتياطية [EN] التي تحتاج إلى ترجمة.


استكشاف الأخطاء وإصلاحها

المشكلةالحل
OPENROUTER_API_KEY not setصدّر المفتاح أو أضفه إلى .env في جذر مشروعك
No locale files foundعيّن localesDir في الإعدادات، أو تأكد من أن ملفات اللغات لديك تطابق التسمية القياسية (en.json، fr.json)
[GATE] Script compliance failedحصلت لغتك المستهدفة على نص لاتيني بدلًا من نظام الكتابة المتوقع — جرّب نموذجًا مختلفًا أو أضِف بيانات توجيه
[GATE] Source echoأرجع النموذج النص الإنجليزي دون تغيير — عادةً ما تحل بيانات التوجيه أو نموذج مختلف هذه المشكلة
جميع الترجمات مخزّنة مؤقتًاشغّل مع --no-tm لتجاوز الذاكرة المؤقتة، أو --force-keys لمفاتيح محددة
تعارضات ملف القفليستخدم .champollion.lock تجزئات SHA-256 — يمكن حل تعارضات الدمج بأمان بالاحتفاظ بأي من النسختين، ثم إعادة تشغيل المزامنة

ما التالي