المشاريع الكبيرة

توفر واجهة سطر الأوامر Lingo.dev تحسينات في الأداء واستراتيجيات سير العمل للمشاريع الضخمة للترجمة والتوطين التي تحتوي على مئات الآلاف من مفاتيح الترجمة، ولغات متعددة، وهياكل محتوى معقدة.

بالنسبة للمشاريع ذات المحتوى الواسع، توفر واجهة سطر الأوامر معالجة متوازية وتكاملاً مع CI/CD للتعامل مع الترجمة على نطاق واسع بكفاءة.

المعالجة المتوازية

تعالج واجهة سطر الأوامر Lingo.dev المشاريع الكبيرة بشكل أسرع باستخدام عمليات متوازية تتعامل مع مهام ترجمة متعددة في وقت واحد.

تفعيل المعالجة المتوازية:

npx lingo.dev@latest run

يوزع هذا مهام الترجمة عبر عمليات متعددة، مما يقلل بشكل كبير من وقت المعالجة للمشاريع الكبيرة.

التحكم في التزامن:

npx lingo.dev@latest run --concurrency 16

التزامن الافتراضي هو 10 عمليات. القيم الأعلى تعالج المزيد من المهام في وقت واحد ولكن قد تصل إلى حدود معدل API.

كيفية عمل المعالجة المتوازية

تنشئ واجهة سطر الأوامر مجموعة من العمليات التي تعالج مهام الترجمة بشكل متزامن مع منع تلف الملفات:

  1. توزيع المهام — تقسيم التوطين إلى مهام فردية لكل لغة وملف
  2. تخصيص العمليات — تعيين المهام للعمليات المتاحة باستخدام موازنة الحمل
  3. منع تعارض الوصول — استخدام أقفال نظام الملفات لمنع التعارضات عندما تصل عمليات متعددة إلى نفس الملفات
  4. تتبع التقدم — الإبلاغ عن التقدم في الوقت الفعلي عبر جميع العمليات

مثال للمشاريع الكبيرة:

// Project with 50 files across 10 languages = 500 translation tasks
{
  "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 --target-locale es --target-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
# Make content changes
git push -u origin localize/content-update

تشغيل الترجمة عبر GitHub Actions:

  1. انتقل إلى تبويب Actions في المستودع
  2. اختر سير عمل "Lingo.dev Localization"
  3. شغّل سير العمل على فرع الترجمة الخاص بك
  4. راجع المحتوى المترجم ثم ادمجه

يوفر هذا النهج فصلاً واضحاً بين تغييرات المحتوى ومعالجة الترجمة.

اعتبارات الأداء

موارد النظام:

  • تستخدم المعالجة المتوازية المزيد من المعالج والذاكرة
  • راقب أداء النظام مع إعدادات التزامن العالية
  • تتعامل أدوات تشغيل 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/           # Application content
  marketing/             # Marketing content
  docs/                  # Documentation
  i18n.json             # Configuration
  i18n.lock             # Content tracking

البنية المنظمة تجعل المشاريع الكبيرة قابلة للإدارة وتتيح المعالجة الانتقائية.

استراتيجيات التوسع

المعالجة التدريجية:

  • استخدم ملف القفل لمعالجة المحتوى المتغير فقط
  • قم بتحديث لغات أو مجموعات محددة حسب الحاجة
  • ادمج مع CI/CD للتحديثات التدريجية الآلية

سير عمل الفريق:

  • استخدم الترجمة المستندة إلى الفروع للتعاون
  • افصل تغييرات المحتوى عن عمل الترجمة
  • راجع الترجمات قبل الدمج في الإنتاج

تحسين الموارد:

  • اضبط التزامن بناءً على قدرات النظام
  • استخدم أدوات التشغيل السحابية لأحمال المعالجة الثقيلة
  • راقب أوقات المعالجة وحسّن تكوينات المجموعات