العمل مع الترجمات الموجودة

تتكامل واجهة سطر أوامر Lingo.dev بسلاسة مع المشاريع التي تحتوي بالفعل على ملفات ترجمة، مع الحفاظ على العمل الموجود أثناء ملء الترجمات المفقودة.

عند تشغيل واجهة سطر الأوامر على مشروع يحتوي على ترجمات موجودة، فإنها تحلل ما تمت ترجمته بالفعل وتنشئ محتوى فقط للمفاتيح المفقودة، مع الحفاظ على جودة الترجمة واتساقها الحالي.

ملاحظة: تأكد من أن ملفات اللغة الهدف فارغة ولا تحتوي على محتوى باللغة المصدر. يُعد وجود محتوى اللغة المصدر في الملفات الهدف ممارسة سيئة ويمكن أن يتعارض مع عملية الترجمة.

كيف يعمل

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

مثال على السيناريو:

// locales/en.json (source)
{
  "welcome": "Welcome to our app",
  "button.save": "Save",
  "button.cancel": "Cancel",
  "error.network": "Network error"
}

// locales/es.json (existing partial translations)
{
  "welcome": "Bienvenido a nuestra aplicación",
  "button.save": "Guardar"
}

تشغيل npx lingo.dev@latest run يولد فقط الترجمات المفقودة:

// locales/es.json (after CLI run)
{
  "welcome": "Bienvenido a nuestra aplicación",
  "button.save": "Guardar",
  "button.cancel": "Cancelar",
  "error.network": "Error de red"
}

تظل ترجماتك الحالية لـ "welcome" و "button.save" دون تغيير.

التشغيل الأول مع الترجمات الموجودة

عند تشغيل واجهة سطر أوامر Lingo.dev لأول مرة على مشروع يحتوي على ترجمات موجودة، فإنها تنشئ ملف i18n.lock بناءً على حالتك الحالية. يتتبع ملف القفل هذا المحتوى الذي تمت معالجته، مما يضمن عدم إعادة إنشاء الترجمات الموجودة.

سير العمل:

  1. المسح الأولي — تحدد واجهة سطر الأوامر الترجمات الموجودة في الملفات الهدف
  2. تحليل الفجوات — تقارن مفاتيح المصدر مع الملفات الهدف للعثور على الترجمات المفقودة
  3. إنشاء الترجمة — تنشئ الترجمات المفقودة فقط
  4. إنشاء ملف القفل — تسجل بصمات المحتوى لجميع محتوى المصدر

الترحيل من أنظمة الترجمة القديمة

تعمل واجهة سطر أوامر Lingo.dev مع ملفات الترجمة التي تم إنشاؤها بواسطة أي أداة، طالما أنها تتبع التنسيقات القياسية مثل JSON أو YAML أو أنواع الملفات الأخرى المدعومة.

خطوات الترحيل:

  1. تكوين i18n.json — قم بإعداد أنماط الحاويات لمطابقة مواقع الملفات الموجودة
  2. تشغيل الترجمة الأولية — تملأ واجهة سطر الأوامر أي ترجمات مفقودة
  3. المراجعة والالتزام — يتم الحفاظ على الترجمات الموجودة، ويتم ملء الفجوات فقط

مثال على الترحيل:

// Your existing project structure
locales/
  en.json    (source)
  es.json    (partial translations from previous tool)
  fr.json    (partial translations from previous tool)

// i18n.json configuration
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

تحترم واجهة سطر الأوامر هيكل الملفات والترجمات الموجودة لديك.

التعامل مع جودة الترجمة

قد تكون الترجمات الموجودة ذات جودة أقل من الترجمات التي تنتجها محركات الترجمة بالذكاء الاصطناعي. توفر واجهة سطر أوامر Lingo.dev خيارات لتحديث الترجمات عند الحاجة:

الاحتفاظ بالترجمات الموجودة:

npx lingo.dev@latest run
# Preserves all existing translations, fills in gaps

إعادة ترجمة لغات محددة:

npx lingo.dev@latest run --force --target-locale es
# Regenerates all Spanish translations

إعادة ترجمة مفاتيح محددة:

npx lingo.dev@latest run --force --key error.network
# Regenerates just the error.network key across all languages

لمزيد من المعلومات حول إعادة الترجمة، راجع إعادة الترجمة.

ملفات الهدف الفارغة

إذا كانت لديك ملفات هدف فارغة أو ملفات تحتوي على بعض المفاتيح فقط، تتعامل واجهة سطر أوامر Lingo.dev معها على أنها مترجمة جزئيًا وتملأ المحتوى المفقود.

مثال:

// locales/de.json (empty target file)
{}

بعد تشغيل واجهة سطر الأوامر، يصبح ملف ترجمة كاملاً مع ترجمة جميع المفاتيح المصدر.

تهيئة ملف القفل

ينشئ التشغيل الأول ملف i18n.lock يعكس حالتك الموجودة. يمنع هذا واجهة سطر الأوامر من إعادة ترجمة المحتوى الموجود بالفعل، حتى لو لم يتم إنشاؤه في الأصل بواسطة واجهة سطر أوامر Lingo.dev.

يضمن ملف القفل هذا سلوكًا متسقًا بين الترجمات الموجودة والجديدة في المستقبل.