قفل المفاتيح

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

إعداد قفل المفاتيح

أضف lockedKeys إلى تكوين الحاوية في ملف i18n.json:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["system/component", "config/engine", "modules/processor"]
    }
  }
}

تستخدم مصفوفة lockedKeys ترميز الشرطة المائلة للأمام (/) لتحديد المفاتيح المتداخلة.

كيفية عمل قفل المفاتيح

أثناء معالجة الترجمة، تقوم واجهة سطر أوامر Lingo.dev:

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

مثال لسير العمل:

// locales/en.json (المصدر)
{
  "welcome": "Welcome to our platform",
  "system": {
    "component": "Lingo.dev CLI",
    "processor": "Translation Engine"
  },
  "config": {
    "engine": "Lingo.dev Engine"
  }
}

مع تكوين المفاتيح المقفلة:

{
  "lockedKeys": ["system/component", "system/processor", "config/engine"]
}

الترجمة الإسبانية المُنشأة:

// locales/es.json (المُنشأة)
{
  "welcome": "Bienvenido a nuestra plataforma",
  "system": {
    "component": "Lingo.dev CLI",
    "processor": "Translation Engine"
  },
  "config": {
    "engine": "Lingo.dev Engine"
  }
}

فقط welcome يتم ترجمتها، بينما تظل المفاتيح المقفلة متطابقة مع المصدر.

بدون قفل المفاتيح، قد تتم ترجمة "Lingo.dev Engine" بشكل خاطئ إلى "Motor de Lingo.dev" في الإسبانية أو "Lingo.devエンジン" في اليابانية، وهو ما لا نريده في هذا المثال.

مسارات المفاتيح المتداخلة

استخدم ترميز الشرطة المائلة للأمام (/) لقفل المفاتيح على أي عمق:

{
  "lockedKeys": [
    "system/engine/component",
    "modules/ai/processor",
    "config/translation/handler"
  ]
}

يعمل هذا الترميز مع الهياكل المتداخلة المعقدة:

// هيكل المصدر
{
  "system": {
    "engine": {
      "component": "Lingo.dev Engine"
    }
  }
}

المسار system/engine/component يقفل قيمة اسم المكون.

المفاتيح التي تحتوي على نقاط

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

// المصدر بأسماء مفاتيح منقطة
{
  "modules": {
    "ai.translation": "الترجمة بالذكاء الاصطناعي",
    "content.processor": "معالج المحتوى"
  }
}

قم بقفل هذه المفاتيح باستخدام:

{
  "lockedKeys": ["modules/ai.translation", "modules/content.processor"]
}

أنواع متعددة من الحاويات

يمكن أن تحتوي تنسيقات الملفات المختلفة على مفاتيح مقفلة مختلفة:

{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["config/engine", "system/component"]
    },
    "yaml": {
      "include": ["translations/[locale].yml"],
      "lockedKeys": ["service/name", "module/title"]
    }
  }
}

تحتفظ كل نوع من أنواع الحاويات بقائمة المفاتيح المقفلة الخاصة به بناءً على هيكل المحتوى.