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

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

ذاكرة الترجمة (TM) هي طبقة التخزين المؤقت المدمجة في champollion. تقوم بتخزين كل ترجمة باستخدام مفتاح مكوّن من النص المصدر + اللغة + الطريقة، بحيث أن إعادة تشغيل sync لا تستدعي واجهة برمجة التطبيقات (API) إلا للمفاتيح التي تغيّرت فعلياً.

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

بدون ذاكرة الترجمة، تقوم كل عملية sync بإعادة ترجمة كل مفتاح معدَّل — حتى لو كنت قد ترجمت نفس النص الإنجليزي بالضبط لنفس اللغة في تشغيل سابق. السيناريوهات الشائعة التي يهدر فيها هذا المال:

السيناريوبدون ذاكرة الترجمةمع ذاكرة الترجمة
إعادة تشغيل المزامنة بعد تغيير مفتاح واحد (500 مفتاح × 10 لغات)5,000 استدعاء API10 استدعاءات API
إرجاع مفتاح إلى قيمة إنجليزية سابقةاستدعاء API كاملإصابة فورية في الذاكرة المؤقتة
ظهور نفس العبارة في 3 ملفات لغوية3 × استدعاءات APIاستدعاء API واحد + إصابتان في الذاكرة المؤقتة
تشغيل تجريبي ← مزامنة حقيقيةاستدعاءات API كاملة في كلتيهماالتشغيل الأول يخزّن مؤقتاً، والثاني يعيد الاستخدام

ذاكرة الترجمة مفعّلة افتراضياً ولا تتطلب أي إعداد. تُخزَّن الترجمات مؤقتاً بشكل تلقائي أثناء كل sync وتُقدَّم في عمليات التشغيل اللاحقة.

كيف تعمل

مفتاح التخزين المؤقت

كل إدخال في ذاكرة الترجمة يُعرَّف بمفتاح هو تجزئة SHA-256 لثلاث قيم:

SHA-256( sourceValue + '\x00' + locale + '\x00' + method )
المكوّنسبب وجوده في المفتاح
sourceValueنص إنجليزي مختلف ← ترجمة مختلفة
localeكلمة "Hello" تُترجم بشكل مختلف إلى الفرنسية مقارنة باليابانية
methodمخرجات Google Translate ≠ مخرجات GPT-4o

الفاصل بالبايت الصفري (\x00) يمنع التصادم بين "ab" + "c" و"a" + "bc".

أثناء المزامنة

  1. قبل استدعاء واجهة برمجة تطبيقات الترجمة، يقوم champollion بتقسيم المفاتيح إلى إصابات في ذاكرة الترجمة وإخفاقات في ذاكرة الترجمة
  2. تُقدَّم الإصابات فوراً من الذاكرة المؤقتة — بلا استدعاء API، وبلا تأخير، وبلا تكلفة
  3. تمر الإخفاقات عبر مسار الترجمة الاعتيادي
  4. تُخزَّن الترجمات الجديدة الواردة من واجهة برمجة التطبيقات في ذاكرة الترجمة لعمليات التشغيل المستقبلية
  5. تمر جميع الترجمات (المخزّنة مؤقتاً + الجديدة) عبر بوابة الجودة

التخزين

تُخزَّن ذاكرة الترجمة في .champollion/tm.json في جذر مشروعك. يستخدم الملف صيغة JSON مضغوطة (بدون تنسيق جمالي) للحفاظ على حجم معقول. يخزّن كل إدخال:

الحقلالوصف
tالنص المترجَم
tsطابع زمني بصيغة ISO-8601 لوقت تخزينه المؤقت
lرمز اللغة الهدف (للإحصاءات/التصفية)
mاسم طريقة الترجمة (للإحصاءات/التصفية)

عند 50 لغة × 500 مفتاح = 25,000 إدخال، يُفترض أن يكون حجم الملف نحو 2-3 ميجابايت.

إدارة الذاكرة المؤقتة

عرض الإحصاءات

champollion tm stats

يعرض عدد الإدخالات وحجم الملف وتفصيلاً لكل لغة:

Translation Memory — .champollion/tm.json

Entries: 2,847
File size: 1.2 MB
Created: 2026-05-20
Last entry: 2026-05-24

By locale:
fr 482 entries (llm: 380, llm-coached: 102)
de 471 entries (llm: 471)
ja 465 entries (llm: 465)

مسح الذاكرة المؤقتة

# Clear everything (with confirmation prompt)
champollion tm clear

# Clear without prompt (CI environments)
champollion tm clear --yes

# Clear only one locale
champollion tm clear --locale fr

تخطي ذاكرة الترجمة لتشغيل واحد

# Force fresh API calls for all keys (useful when switching providers)
champollion sync --no-tm

هذا لا يحذف الذاكرة المؤقتة — بل يتجاهلها فقط لهذا التشغيل ولا يخزّن نتائج جديدة.

متى لا تكون ذاكرة الترجمة مفيدة

لن تُنتج ذاكرة الترجمة إصابة في الذاكرة المؤقتة عندما:

  • يتغيّر النص المصدر — تتغيّر التجزئة، فتكون النتيجة إخفاقاً
  • تتغيّر الطريقة — التبديل من llm إلى google-translate يعني مفاتيح تخزين مؤقت مختلفة
  • التشغيل الأول — بداية باردة، لا توجد إدخالات بعد
  • علم --no-tm — يتجاوز الذاكرة المؤقتة بشكل صريح

هل ينبغي عليك إيداع .champollion/tm.json؟

عموماً لا. ذاكرة الترجمة هي تحسين محلي للمطوّر. تُملأ تلقائياً أثناء المزامنة ولا تفيد إلا عند إعادة تشغيل المزامنة على نفس الجهاز. ومع ذلك، قد تفكر في إيداعها إذا:

  • كان فريقك يشارك مشغّل CI واحداً يقوم بمزامنة الترجمات
  • كنت تريد عمليات بناء قابلة لإعادة الإنتاج دون استدعاءات API
  • كنت تؤرشف الترجمات لأغراض الامتثال

أضف .champollion/tm.json إلى .gitignore للاستخدام الاعتيادي.


انظر أيضاً