المشاريع الكبيرة
توفر واجهة سطر أوامر Lingo.dev تحسينات في الأداء واستراتيجيات سير العمل لمشاريع التوطين واسعة النطاق التي تحتوي على مئات الآلاف من مفاتيح الترجمة، ولغات متعددة، وهياكل محتوى معقدة.
بالنسبة للمشاريع ذات المحتوى الواسع، توفر واجهة سطر الأوامر معالجة متوازية وتكامل CI/CD للتعامل مع الترجمة على نطاق واسع بكفاءة.
المعالجة المتوازية
تقوم واجهة سطر أوامر Lingo.dev بمعالجة المشاريع الكبيرة بشكل أسرع باستخدام عمال متوازيين يتعاملون مع مهام ترجمة متعددة في وقت واحد.
تفعيل المعالجة المتوازية:
npx lingo.dev@latest run
هذا يوزع مهام الترجمة عبر عمال متعددين، مما يقلل بشكل كبير من وقت المعالجة للمشاريع الكبيرة.
التحكم في تزامن العمال:
npx lingo.dev@latest run --concurrency 16
التزامن الافتراضي هو 10 عمال. القيم الأعلى تعالج المزيد من المهام في وقت واحد ولكن قد تصل إلى حدود معدل واجهة برمجة التطبيقات.
كيفية عمل المعالجة المتوازية
تقوم واجهة سطر الأوامر بإنشاء مجموعة عمال تعالج مهام الترجمة بالتزامن مع منع تلف الملفات:
- توزيع المهام — تقسيم التوطين إلى مهام فردية لكل لغة وملف
- تخصيص العمال — تعيين المهام للعمال المتاحين باستخدام موازنة الحمل
- منع حالات التسابق — استخدام أقفال نظام الملفات لمنع التعارضات عندما يصل عدة عمال إلى نفس الملفات
- تتبع التقدم — الإبلاغ عن التقدم في الوقت الفعلي عبر جميع العمال
مثال للمشاريع الكبيرة:
// مشروع به 50 ملفًا عبر 10 لغات = 500 مهمة ترجمة
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja", "zh", "ko", "pt", "it", "ru", "ar"]
},
"buckets": {
"json": {
"include": ["src/locales/[locale]/*.json"]
},
"markdown": {
"include": ["docs/[locale]/*.md"]
}
}
}
مع المعالجة المتوازية، يتم توزيع هذه المهام الـ 500 عبر العمال بدلاً من معالجتها بشكل متسلسل.
المعالجة المستهدفة
للمشاريع الكبيرة، يمكنك معالجة أجزاء محددة بدلاً من معالجة كل شيء دفعة واحدة:
معالجة لغات محددة:
npx lingo.dev@latest run --locale es --locale fr
معالجة أنواع ملفات محددة:
npx lingo.dev@latest run --bucket json
معالجة ملفات محددة:
npx lingo.dev@latest run --file components/header
تعتبر هذه المعالجة الانتقائية مفيدة للتحديثات التدريجية أثناء التطوير.
تكامل CI/CD
تستفيد المشاريع الكبيرة من سير عمل الترجمة الآلية باستخدام GitHub Actions أو أنظمة CI/CD الأخرى.
سير عمل GitHub Actions:
name: Lingo.dev Localization
on:
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
localize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
يقوم سير العمل هذا بمعالجة الترجمات على فروع مخصصة، مما يبقي عمل الترجمة منفصلاً عن التطوير.
سير العمل المعتمد على الفروع
للمشاريع الكبيرة، استخدم فروعًا مخصصة لعمل الترجمة:
إنشاء فرع الترجمة:
git checkout main
git checkout -b localize/content-update
# إجراء تغييرات المحتوى
git push -u origin localize/content-update
تشغيل الترجمة عبر GitHub Actions:
- انتقل إلى علامة تبويب Actions في المستودع
- حدد سير عمل "Lingo.dev Localization"
- قم بتشغيل سير العمل على فرع الترجمة الخاص بك
- راجع ودمج المحتوى المترجم
يوفر هذا النهج فصلاً واضحًا بين تغييرات المحتوى ومعالجة الترجمة.
اعتبارات الأداء
موارد النظام:
- تستخدم المعالجة المتوازية المزيد من وحدة المعالجة المركزية والذاكرة
- مراقبة أداء النظام مع إعدادات التزامن العالية
- تتعامل أنظمة تشغيل CI/CD السحابية بكفاءة مع أعباء العمل المتوازية
حدود معدل API:
- قد يؤدي التزامن الأعلى إلى تفعيل تحديد المعدل
- ابدأ بالإعدادات الافتراضية واضبطها بناءً على الأداء
- يتعامل محرك Lingo.dev تلقائيًا مع تحديد المعدل
نظام الملفات:
- تنشئ المشاريع الكبيرة العديد من ملفات الترجمة
- استخدم .gitignore للملفات المؤقتة إذا لزم الأمر
- قم بإيداع ملف
i18n.lock
لتتبع المحتوى
تنظيم المشروع
فصل الحاويات:
{
"buckets": {
"app": {
"include": ["src/locales/[locale].json"]
},
"marketing": {
"include": ["marketing/[locale]/*.json"]
},
"docs": {
"include": ["docs/[locale]/*.md"]
}
}
}
تسمح الحاويات المنفصلة بمعالجة مستهدفة لمناطق محتوى مختلفة.
هيكل الملفات:
project/
src/locales/ # محتوى التطبيق
marketing/ # محتوى التسويق
docs/ # التوثيق
i18n.json # التكوين
i18n.lock # تتبع المحتوى
الهيكل المنظم يجعل المشاريع الكبيرة قابلة للإدارة ويمكّن من المعالجة الانتقائية.
استراتيجيات التوسع
المعالجة التدريجية:
- استخدام ملف القفل لمعالجة المحتوى المتغير فقط
- تحديث لغات أو حاويات محددة حسب الحاجة
- الدمج مع CI/CD للتحديثات التدريجية الآلية
سير عمل الفريق:
- استخدام الترجمة المستندة إلى الفروع للتعاون
- فصل تغييرات المحتوى عن عمل الترجمة
- مراجعة الترجمات قبل دمجها في الإنتاج
تحسين الموارد:
- ضبط التزامن بناءً على قدرات النظام
- استخدام المشغلات السحابية لأعباء المعالجة الثقيلة
- مراقبة أوقات المعالجة وتحسين تكوينات الحاويات