JSON

ترجمة ملفات JSON بالذكاء الاصطناعي باستخدام Lingo.dev CLI

ما هو JSON؟

JSON (JavaScript Object Notation) هو تنسيق تبادل بيانات خفيف الوزن يسهل على البشر قراءته وكتابته ويسهل على الأجهزة تحليله وإنشاؤه. يُستخدم بشكل شائع في ملفات التكوين وتخزين البيانات والاتصال عبر واجهات برمجة التطبيقات.

على سبيل المثال:

{
  "title": "Hello, world!",
  "description": "A simple demo app",
  "author": {
    "name": "John Doe"
  },
  "messages": [
    "Welcome to MyApp",
    "Hello, world!"
  ],
  "config": {
    "theme": {
      "primary": "Blue theme"
    }
  }
}

ما هو Lingo.dev CLI؟

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

لمعرفة المزيد، راجع نظرة عامة.

حول هذا الدليل

يشرح هذا الدليل كيفية ترجمة ملفات JSON باستخدام Lingo.dev CLI.

ستتعلم كيفية:

  • إنشاء مشروع من الصفر
  • تكوين خط أنابيب الترجمة
  • إنشاء ترجمات باستخدام الذكاء الاصطناعي

المتطلبات الأساسية

لاستخدام Lingo.dev CLI، تأكد من تثبيت Node.js الإصدار 18 أو أحدث:

❯ node -v
v22.17.0

الخطوة 1. إعداد المشروع

في دليل مشروعك، أنشئ ملف i18n.json:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {}
}

يحدد هذا الملف سلوك خط أنابيب الترجمة، بما في ذلك اللغات المراد الترجمة بينها ومكان وجود المحتوى القابل للترجمة في نظام الملفات.

لمعرفة المزيد حول الخصائص المتاحة، راجع i18n.json.

الخطوة 2. تكوين اللغة المصدر

اللغة المصدر هي اللغة والمنطقة الأصلية التي تمت كتابة المحتوى بها. لتكوين اللغة المصدر، قم بتعيين خاصية locale.source في ملف i18n.json:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {}
}

يجب توفير اللغة المصدر كـ علامة لغة BCP 47.

للحصول على القائمة الكاملة لرموز اللغات التي يدعمها Lingo.dev CLI، راجع رموز اللغات المدعومة.

الخطوة 3. تكوين اللغات المستهدفة

اللغات المستهدفة هي اللغات والمناطق التي تريد ترجمة محتواك إليها. لتكوين اللغات المستهدفة، قم بتعيين خاصية locale.targets في ملف i18n.json:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {}
}

الخطوة 4. إنشاء المحتوى المصدر

إذا لم تكن قد قمت بذلك بالفعل، قم بإنشاء ملف JSON واحد أو أكثر يحتوي على المحتوى المراد ترجمته. يجب أن تكون هذه الملفات موجودة في مسار يتضمن اللغة المصدر في مكان ما من المسار (على سبيل المثال، كاسم دليل مثل en/ أو كجزء من اسم الملف مثل messages.en.json).

الخطوة 5. إنشاء حاوية

  1. في ملف i18n.json، أضف كائن "json" إلى كائن buckets:

    {
      "$schema": "https://lingo.dev/schema/i18n.json",
      "version": "1.10",
      "locale": {
        "source": "en",
        "targets": ["es"]
      },
      "buckets": {
        "json": {}
      }
    }
    
  2. في كائن "json"، قم بتعريف مصفوفة من نمط include واحد أو أكثر:

    {
      "$schema": "https://lingo.dev/schema/i18n.json",
      "version": "1.10",
      "locale": {
        "source": "en",
        "targets": ["es"]
      },
      "buckets": {
        "json": {
          "include": ["./[locale]/example.json"]
        }
      }
    }
    

    تحدد هذه الأنماط الملفات المراد ترجمتها.

    الأنماط نفسها:

    • يجب أن تحتوي على [locale] كعنصر نائب للغة المكونة
    • يمكن أن تشير إلى مسارات الملفات (على سبيل المثال، "[locale]/config.json")
    • يمكن استخدام النجوم كعناصر نائبة بدل (على سبيل المثال، "[locale]/*.json")

    أنماط glob العودية (على سبيل المثال، **/*.json) غير مدعومة.

الخطوة 6. تكوين نموذج لغوي كبير

يستخدم Lingo.dev CLI نماذج لغوية كبيرة (LLMs) لترجمة المحتوى بالذكاء الاصطناعي. لاستخدام أحد هذه النماذج، تحتاج إلى مفتاح API من مزود مدعوم.

للبدء بأسرع وقت ممكن، نوصي باستخدام Lingo.dev Engine — منصتنا المستضافة الخاصة التي توفر 10,000 رمز مميز من الاستخدام المجاني الشهري:

  1. سجل للحصول على حساب Lingo.dev.

  2. قم بتشغيل الأمر التالي:

    npx lingo.dev@latest login
    

    سيؤدي هذا إلى فتح المتصفح الافتراضي الخاص بك ومطالبتك بالمصادقة.

  3. اتبع التعليمات.

الخطوة 7. إنشاء الترجمات

في الدليل الذي يحتوي على ملف i18n.json، قم بتشغيل الأمر التالي:

npx lingo.dev@latest run

يقوم هذا الأمر بما يلي:

  1. قراءة ملف i18n.json.
  2. العثور على الملفات التي تحتاج إلى ترجمة.
  3. استخراج المحتوى القابل للترجمة من الملفات.
  4. استخدام نموذج اللغة الكبير المُكوَّن لترجمة المحتوى المستخرج.
  5. كتابة المحتوى المترجم مرة أخرى إلى نظام الملفات.

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

مثال

en/example.json

{
  "title": "Hello, world!",
  "description": "A simple demo app",
  "version": "1.0.0",
  "support_email": "[email protected]",
  "homepage": "https://lingo.dev",
  "deprecated": null,
  "empty": "",
  "emoji": "🚀",
  "author": {
    "name": "John Doe"
  },
  "contributors": [
    { "name": "Alice" },
    { "name": "Bob" }
  ],
  "messages": [
    "Welcome to MyApp",
    "Hello, world!"
  ],
  "config": {
    "theme": {
      "primary": "Blue theme"
    }
  },
  "mixed_array": [
    "Mixed content here",
    42,
    true,
    {
      "nested_message": "Nested text"
    }
  ],
  "locked_key_1": "This value is locked and should not be changed",
  "ignored_key_1": "This value is ignored and should not appear in target locales"
}

es/example.json

{
  "title": "¡Hola, mundo!",
  "description": "Una aplicación de demostración simple",
  "version": "1.0.0",
  "support_email": "[email protected]",
  "homepage": "https://lingo.dev",
  "deprecated": null,
  "empty": "",
  "emoji": "🚀",
  "author": {
    "name": "Juan Pérez"
  },
  "contributors": [
    { "name": "Alicia" },
    { "name": "Roberto" }
  ],
  "messages": [
    "Bienvenido a MyApp",
    "¡Hola, mundo!"
  ],
  "config": {
    "theme": {
      "primary": "Tema azul"
    }
  },
  "mixed_array": [
    "Contenido mixto aquí",
    42,
    true,
    {
      "nested_message": "Texto anidado"
    }
  ],
  "locked_key_1": "This value is locked and should not be changed"
}

i18n.json

{
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {
    "json": {
      "include": ["./[locale]/example.json"],
      "lockedKeys": ["locked_key_1"]
    }
  },
  "$schema": "https://lingo.dev/schema/i18n.json"
}

i18n.lock

version: 1
checksums:
  455da9346f4e772000927cd2ff5bb898:
    title: 0468579ef2fbc83c9d520c2f2f1c5059
    description: 49f8864eb0e53903f04532bf33e1e4fa
    version: 54a9e730e88fb16291b852274d433923
    support_email: 10627fcc465897af0f5e1bba042685f9
    emoji: b328c432cee108a87a92f05258b6a651
    author/name: febee8e9ab40b2fe5106d72675228d00
    contributors/0/name: e80d4063a32adaad7b0a82b0bcc10551
    contributors/1/name: b2bca2fa3c890618e56d07473f26ead3
    messages/0: d1c3a9f35e377554a4ccaa467ca26614
    messages/1: 0468579ef2fbc83c9d520c2f2f1c5059
    config/theme/primary: 7535a3779d6934ea8ecf18f5cb5b93fd
    mixed_array/0: 001b5b003d96c133534f5907abffdf77
    mixed_array/3/nested_message: 5f0782dfc5993e99890c0475bc295a30