قاموس JSON

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

ما هو قاموس JSON؟

قاموس JSON هو تنسيق للترجمة يخزن جميع الترجمات للغات متعددة في ملف JSON واحد. يحتوي كل مفتاح على كائن مع رموز اللغات كمفاتيح والنصوص المترجمة كقيم، مما يجعل من السهل الحفاظ على جميع الترجمات في مكان واحد.

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

{
  "navigation": {
    "en": "Home"
  },
  "buttons": {
    "submit": {
      "en": "Submit"
    },
    "cancel": {
      "en": "Cancel"
    }
  },
  "forms": {
    "login": {
      "username": {
        "en": "Username"
      }
    }
  }
}

ما هي واجهة سطر أوامر Lingo.dev؟

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

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

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

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

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

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

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

لاستخدام واجهة سطر أوامر Lingo.dev، تأكد من تثبيت 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، راجع رموز اللغات المدعومة.

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

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

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

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

إذا لم تقم بذلك بالفعل، قم بإنشاء ملف قاموس JSON يحتوي على المحتوى المراد ترجمته.

ملاحظة: أثناء عملية الترجمة، سيتم إعادة كتابة ملفات المحتوى المصدر لتشمل المحتوى المترجم (بالإضافة إلى المحتوى المصدر).

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

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

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

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

    هذه الأنماط تحدد الملفات التي سيتم ترجمتها ويمكن إما:

    • الإشارة إلى مسارات ملفات محددة (مثل "some/dir/file.json")
    • استخدام علامات النجمة كعلامات بديلة (مثل "some/dir/*.json")

    أنماط glob المتكررة (مثل **/*.json) غير مدعومة.

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

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

للبدء بأسرع وقت ممكن، نوصي باستخدام محرك Lingo.dev — منصتنا المستضافة التي توفر 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. يستخدم نموذج اللغة الآلي (LLM) المُكوّن لترجمة المحتوى المستخرج.
  5. يكتب المحتوى المترجم مرة أخرى إلى نظام الملفات.

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

مثال

example.json (قبل الترجمة)

{
  "navigation": {
    "en": "Home"
  },
  "buttons": {
    "submit": {
      "en": "Submit"
    },
    "cancel": {
      "en": "Cancel"
    }
  },
  "messages": {
    "welcome": {
      "en": "Welcome to our application"
    },
    "error": {
      "en": "An error occurred"
    }
  },
  "forms": {
    "login": {
      "title": {
        "en": "Login"
      },
      "fields": {
        "username": {
          "en": "Username"
        },
        "password": {
          "en": "Password"
        }
      }
    }
  }
}

example.json (بعد الترجمة)

{
  "navigation": {
    "en": "Home",
    "es": "Inicio"
  },
  "buttons": {
    "submit": {
      "en": "Submit",
      "es": "Enviar"
    },
    "cancel": {
      "en": "Cancel",
      "es": "Cancelar"
    }
  },
  "messages": {
    "welcome": {
      "en": "Welcome to our application",
      "es": "Bienvenido a nuestra aplicación"
    },
    "error": {
      "en": "An error occurred",
      "es": "Ha ocurrido un error"
    }
  },
  "forms": {
    "login": {
      "title": {
        "en": "Login",
        "es": "Iniciar sesión"
      },
      "fields": {
        "username": {
          "en": "Username",
          "es": "Nombre de usuario"
        },
        "password": {
          "en": "Password",
          "es": "Contraseña"
        }
      }
    }
  }
}

i18n.json

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

i18n.lock

version: 1
checksums:
  455da9346f4e772000927cd2ff5bb898:
    navigation: 104a3db3b671c04e167eafbe21e57881
    buttons/submit: 7c91ef5f747eea9f77a9c4f23e19fb2e
    buttons/cancel: 2e2a849c2223911717de8caa2c71bade
    messages/welcome: 1308168cca4fa5d8d7a0cf24e55e93fc
    messages/error: 53a2b5f5e7d83c737c8e02fe18fb4bdb
    forms/login/title: f4f219abeb5a465ecb1c7efaf50246de
    forms/login/fields/username: 2ee65bc2dd2f12cf2672f95b2a054bf8
    forms/login/fields/password: 223a61cf906ab9c40d22612c588dff48
  a8f80a1a4e0e0aa2750e514a8a6abacf:
    navigation: 104a3db3b671c04e167eafbe21e57881
    buttons/submit: 7c91ef5f747eea9f77a9c4f23e19fb2e
    buttons/cancel: 2e2a849c2223911717de8caa2c71bade
    messages/welcome: 1308168cca4fa5d8d7a0cf24e55e93fc
    messages/error: 53a2b5f5e7d83c737c8e02fe18fb4bdb
    forms/login/title: f4f219abeb5a465ecb1c7efaf50246de
    forms/login/fields/username: 2ee65bc2dd2f12cf2672f95b2a054bf8
    forms/login/fields/password: 223a61cf906ab9c40d22612c588dff48