المعالجة المتوازية
توفر واجهة سطر أوامر Lingo.dev المعالجة المتوازية من خلال أمر run، الذي يعالج مهام الترجمة المتعددة في وقت واحد لتقليل وقت الترجمة بشكل كبير للمشاريع الكبيرة.
يحل أمر run محل أمر i18n المهمل، حيث يوفر نفس الوظائف مع تحسينات كبيرة في الأداء من خلال المعالجة المتزامنة.
الاستخدام الأساسي
معالجة جميع الترجمات باستخدام المعالجة المتوازية:
npx lingo.dev@latest run
التحكم في مستوى التزامن:
npx lingo.dev@latest run --concurrency 20
يستخدم أمر run نفس تكوين i18n.json وملفات i18n.lock الخاصة بأمر i18n.
كيفية عمل المعالجة المتوازية
توزع واجهة سطر أوامر Lingo.dev مهام الترجمة عبر عدة عمال متزامنين، مع معالجة أزواج اللغات وأنماط الملفات المختلفة في وقت واحد.
نظرة عامة على البنية:
- إنشاء المهام — تقوم واجهة سطر الأوامر بتحليل إعداداتك وإنشاء مهام فردية لكل مجموعة لغة/ملف
- توزيع العمال — يتم توزيع المهام عبر عمليات عمال متعددة
- المعالجة المتزامنة — يعالج العمال الترجمات في وقت واحد مع منع تعارضات الملفات
- تجميع النتائج — يتم كتابة الترجمات المكتملة بشكل آمن إلى الملفات المستهدفة
التحكم في التزامن
تعيين عدد العمال:
npx lingo.dev@latest run --concurrency 15
التزامن الافتراضي هو 10 عمال. القيم الأعلى تعالج الترجمات بشكل أسرع ولكنها تستهلك المزيد من موارد النظام وقد تصل إلى حدود معدل واجهة برمجة التطبيقات.
التزامن الأمثل يعتمد على قدرات نظامك وحدود مزود الترجمة. ابدأ بالإعداد الافتراضي واضبطه بناءً على الأداء.
المعالجة المستهدفة
معالجة لغات محددة:
npx lingo.dev@latest run --target-locale es --target-locale fr
معالجة أنواع ملفات محددة:
npx lingo.dev@latest run --bucket json
معالجة ملفات محددة:
npx lingo.dev@latest run --file components/header
معالجة مفاتيح محددة:
npx lingo.dev@latest run --key welcome.title
يقبل أنماط glob كما هي معرّفة في مكتبة minimatch.
فرض إعادة الترجمة:
npx lingo.dev@latest run --force
نصيحة: للحصول على أفضل النتائج عند إعادة الترجمة، قم أولاً بإزالة الترجمات باستخدام أمر purge، ثم قم بتشغيل أمر run بدون --force. يستفيد هذا النهج من آلية التخزين المؤقت المدمجة لإعادة ترجمة أكثر كفاءة.
تعمل خيارات الاستهداف هذه بشكل مطابق لأمر i18n ولكنها تعالج المهام بشكل متوازٍ.
منع حالات التسابق
تمنع واجهة سطر أوامر Lingo.dev تلف الملفات أثناء المعالجة المتوازية من خلال عدة ضمانات:
مزامنة الإدخال/الإخراج — يتم مزامنة عمليات نظام الملفات لمنع عدة عمليات من الكتابة إلى نفس الملف في وقت واحد.
حماية ملف القفل — يستخدم ملف i18n.lock عمليات ذرية لمنع التلف أثناء التحديثات المتزامنة.
المعالجة التعاملية — تكتمل كل مهمة بالكامل أو تفشل بشكل نظيف، مما يضمن حالات ملفات متسقة.
تحسين الأداء
راقب موارد النظام عند استخدام قيم تزامن عالية. تم تصميم واجهة سطر الأوامر لتحقيق الكفاءة، ولكن المشاريع الكبيرة جداً قد تستفيد من مراقبة الموارد.
ابدأ بالإعدادات الافتراضية:
npx lingo.dev@latest run
# Uses optimized concurrency settings
قم بالتوسع تدريجياً:
npx lingo.dev@latest run --concurrency 20
# Increase if system handles load well
استهدف محتوى محدد للتكرار:
npx lingo.dev@latest run --file src/components
# Process only changed components
التوافق
يحافظ أمر run على التوافق الكامل مع التكوينات الموجودة:
- نفس تنسيق
i18n.json— لا حاجة لتغييرات في التكوين - نفس سلوك
i18n.lock— يعمل تتبع الترجمة التدريجية بشكل مطابق - نفس تنسيقات الملفات — جميع أنواع الحاويات مدعومة
- نفس خيارات الاستهداف — تعمل أعلام
--bucket،--key،--file،--forceبشكل مطابق - تحديد اللغات باستخدام الخيارات:
--target-localeلتجاوزlocale.targetsمن تكوينi18n.json(ملاحظة: يحل محل خيار--localeلأمرi18n.)--source-localeلتجاوزlocale.sourceمن تكوينi18n.json
الانتقال من أمر i18n:
# Current command
npx lingo.dev@latest i18n
# Parallel equivalent
npx lingo.dev@latest run
يتم نقل جميع الوظائف مباشرة مع تحسين كبير في الأداء.
يتم استبدال خيار --locale بخيارات متميزة --target-locale و --source-locale.
بنية مجموعة العمال
تستخدم واجهة سطر أوامر Lingo.dev نظام مجموعة عمال متطور:
التخصيص الديناميكي — يتم إنشاء العمال بناءً على موارد النظام وإعدادات التزامن.
توزيع المهام — يتم توزيع المهام بالتساوي عبر العمال باستخدام خوارزميات محسّنة.
تتبع التقدم — مراقبة التقدم في الوقت الفعلي عبر جميع العمليات المتوازية.
إدارة الموارد — التنظيف التلقائي وإلغاء تخصيص الموارد عند اكتمال المعالجة.
التخزين المؤقت التلقائي — عند استخدام واجهة برمجة تطبيقات Lingo.dev للترجمات، يتم تقسيم ملفات اللغة الكبيرة إلى أجزاء. يتم ملء ملفات اللغة المستهدفة تدريجياً بالترجمات مع استلام كل جزء من واجهة برمجة التطبيقات. إذا تمت مقاطعة العملية، يمكنك استئناف الترجمة من حيث توقفت.