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

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

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

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

كيف تعمل

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

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

// locales/en.json (المصدر)
{
  "welcome": "Welcome to our app",
  "button.save": "Save",
  "button.cancel": "Cancel",
  "error.network": "Network error"
}

// locales/es.json (ترجمات جزئية موجودة)
{
  "welcome": "Bienvenido a nuestra aplicación",
  "button.save": "Guardar"
}

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

// locales/es.json (بعد تشغيل واجهة سطر الأوامر)
{
  "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. المراجعة والالتزام — يتم الحفاظ على الترجمات الموجودة، ويتم ملء الفجوات فقط

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

// هيكل المشروع الحالي
locales/
  en.json    (المصدر)
  es.json    (ترجمات جزئية من أداة سابقة)
  fr.json    (ترجمات جزئية من أداة سابقة)

// تكوين i18n.json
{
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

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

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

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

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

npx lingo.dev@latest i18n

# يحافظ على جميع الترجمات الموجودة، ويملأ الفجوات

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

npx lingo.dev@latest i18n --force --locale es

# يعيد إنشاء جميع الترجمات الإسبانية

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

npx lingo.dev@latest i18n --force --key error.network

# يعيد إنشاء مفتاح error.network فقط عبر جميع اللغات

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

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

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

مثال:

// locales/de.json (ملف هدف فارغ)
{}

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

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

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

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