ملف القفل i18n.lock
i18n.lock هو ملف قفل يتتبع مجاميع التحقق من المحتوى لمنع إعادة الترجمة غير الضرورية وتحسين أداء Lingo.dev CLI.
يخزن i18n.lock مجاميع التحقق من المحتوى المصدر ومفاتيح الترجمة لتحديد ما تغير بين عمليات الترجمة. ونتيجة لذلك، تتم ترجمة المحتوى الجديد أو المعدل فقط، مما يقلل من وقت المعالجة وتكاليف الترجمة.
بنية ملف القفل
يستخدم i18n.lock تنسيق YAML منظم لتخزين مجاميع التحقق من المحتوى:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
key: f8692d39317193acf0e2e47172703c46
b18975fb19122ebb67g0ef817641f553:
key: g9703e40428204bdf1f3f58283814d57
عناصر التكوين:
version— إصدار مخطط ملف القفل لتوافق الترحيلchecksums— خريطة مجاميع التحقق من المحتوى إلى مجاميع التحقق من المفاتيح التي تتتبع المحتوى المترجمchecksums.[content-hash]— تجزئة SHA-256 للمحتوى المصدر التي تعمل كمعرف فريدchecksums.[content-hash].key— تجزئة SHA-256 لمفتاح الترجمة التي تمكن من اكتشاف إعادة تسمية المفتاح
يحافظ Lingo.dev CLI على الترجمات الموجودة عندما يكتشف محتوى متطابق بمجاميع تحقق مفاتيح مختلفة. لا تحدث إعادة ترجمة، مما يحافظ على اتساق الترجمة مع السماح بتغييرات تنظيم المفاتيح. اقرأ المزيد عن إعادة تسمية المفاتيح.
تكامل سير العمل
يعمل i18n.lock تلقائياً أثناء سير عمل الترجمة:
التشغيل الأول — ينشئ ملف القفل بمجاميع التحقق الأولية من المحتوى:
npx lingo.dev@latest run
# Creates i18n.lock with all source content checksums
إعادة إنشاء ملف القفل — يعيد إنشاء ملف القفل من الصفر:
npx lingo.dev@latest lockfile --force
# Recreates i18n.lock with all source content checksums
نصيحة: يمكنك استخدام هذا الأمر بأمان لإعادة تعيين ملف القفل إلى حالته الحقيقية أثناء حل تعارضات الدمج. تعمل إزالة التكرار أيضاً تلقائياً عند كل تحميل؛ راجع إزالة تكرار ملف القفل.
التشغيلات اللاحقة — تعالج المحتوى المتغير فقط:
npx lingo.dev@latest run
# Compares current content against i18n.lock
# Translates only new or modified content
فرض إعادة الترجمة — يتجاوز تحسين ملف القفل ويعيد ترجمة كل المحتوى، مع إعادة إنشاء ملف القفل:
npx lingo.dev@latest run --force
# Ignores i18n.lock and retranslates all content
التحقق المجمد — يتحقق من اكتمال الترجمة:
npx lingo.dev@latest run --frozen
# Fails if any content requires translation
# Used in CI/CD to ensure complete translations
إزالة تكرار ملف القفل
يمكن أن يحتوي ملف القفل YAML على مفاتيح ترجمة مكررة تحت نفس كتلة مجموع التحقق. تحتفظ محللات YAML القياسية بالحدوث الأخير فقط، مما قد يؤدي إلى فقدان التتبع وتعارضات الدمج التي يصعب حلها يدوياً.
تم بناء Lingo.dev CLI لحالة ملف قفل متسقة. يزيل التكرار من ملف القفل تلقائياً في كل مرة يتم تحميله. يتم اكتشاف المفاتيح المكررة تحت كتلة مجموع التحقق وإزالتها؛ يتم الاحتفاظ بالحدوث الأخير (آخر كتابة تفوز، مطابقاً لسلوك الدمج الشائع). ونتيجة لذلك، يظل ملف القفل متسقاً داخلياً ويطابق ما يتم كتابته مرة أخرى.
متى يعمل — تعمل إزالة التكرار عند كل تحميل، بما في ذلك:
npx lingo.dev@latest runnpx lingo.dev@latest pullnpx lingo.dev@latest pushnpx lingo.dev@latest statusnpx lingo.dev@latest lockfile
إذا تمت إزالة التكرارات، يسجل CLI رسالة مثل: Removed 3 duplicate entries from i18n.lock. لا يلزم اتخاذ أي إجراء من المستخدم؛ الخطوة متماثلة وآمنة للتشغيل عند كل تحميل. بالنسبة لمشكلات الدمج الصعبة أو المتكررة، لا يزال بإمكانك استخدام npx lingo.dev@latest lockfile --force لإعادة إنشاء ملف القفل من الصفر.
مثال — بعد دمج فرعين قاما بتغيير نفس المفاتيح:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
greeting.hello: abc123
greeting.goodbye: def456
greeting.hello: xyz789
button.submit: ghi012
button.submit: jkl345
عند التحميل، يزيل CLI التكرار ويحتفظ بالحدوث الأخير لكل مفتاح:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
greeting.goodbye: def456
greeting.hello: xyz789
button.submit: jkl345
تمت إزالة إدخالين مكررين.
التكامل مع التحكم في الإصدار
يجب إيداع i18n.lock في نظام التحكم في الإصدار مع ملفات الترجمة.
ملف القفل هو جزء أساسي من نظام الترجمة التدريجية لـ Lingo.dev CLI، مما يجعله عمليًا للمشاريع من أي حجم.