JSONC
الترجمة الآلية لملفات JSONC باستخدام واجهة سطر أوامر Lingo.dev
ما هو JSONC؟
JSONC (JSON مع تعليقات) هو امتداد لـ JSON يسمح بالتعليقات أحادية السطر ومتعددة الأسطر. يُستخدم بشكل شائع في ملفات التكوين حيث تكون التوضيحات المقروءة للبشر مفيدة.
على سبيل المثال:
{
"key1": "Hello, world!", // This is a comment for key1
"key2": "A simple demo app with JSONC features" /* This is a comment for key2 */,
// This is a comment for key3
"key3": "1.0.0",
// This is a comment for nested values
"key6": {
"key7": "Nested value",
},
// This key is locked and should not be changed
"locked_key_1": "This value is locked and should not be changed",
}
ما هو Lingo.dev CLI؟
Lingo.dev CLI هو واجهة سطر أوامر مجانية ومفتوحة المصدر لترجمة التطبيقات والمحتوى باستخدام الذكاء الاصطناعي. تم تصميمه ليحل محل برامج إدارة الترجمة التقليدية مع التكامل مع خطوط الإنتاج الحالية.
لمعرفة المزيد، راجع نظرة عامة.
حول هذا الدليل
يشرح هذا الدليل كيفية ترجمة ملفات JSONC باستخدام 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، انظر رموز اللغات المدعومة.
الخطوة 3. تكوين اللغات المستهدفة
اللغات المستهدفة هي اللغات والمناطق التي ترغب في ترجمة المحتوى الخاص بك إليها. لتكوين اللغات المستهدفة، قم بتعيين خاصية locale.targets في ملف i18n.json:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
الخطوة 4. إنشاء المحتوى المصدر
إذا لم تقم بذلك بالفعل، قم بإنشاء ملف أو أكثر من ملفات JSONC التي تحتوي على المحتوى المراد ترجمته. يجب أن تكون هذه الملفات موجودة في مسار يتضمن اللغة المصدر في مكان ما في المسار (مثل اسم دليل مثل en/ أو كجزء من اسم الملف مثل messages.en.jsonc).
الخطوة 5. إنشاء حاوية
-
في ملف
i18n.json، أضف كائن"jsonc"إلى كائنbuckets:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "jsonc": {} } } -
في كائن
"jsonc"، حدد مصفوفة تتضمن نمطincludeواحد أو أكثر:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "jsonc": { "include": ["./[locale]/example.jsonc"] } } }تحدد هذه الأنماط الملفات التي سيتم ترجمتها.
الأنماط نفسها:
- يجب أن تحتوي على
[locale]كعنصر نائب للغة المكونة - يمكن أن تشير إلى مسارات الملفات (مثل
"[locale]/config.jsonc") - يمكن استخدام علامات النجمة كعناصر نائبة عامة (مثل
"[locale]/*.jsonc")
أنماط glob المتكررة (مثل
**/*.jsonc) غير مدعومة. - يجب أن تحتوي على
الخطوة 6. تكوين نموذج لغوي كبير (LLM)
تستخدم واجهة سطر أوامر Lingo.dev نماذج اللغة الكبيرة (LLMs) لترجمة المحتوى باستخدام الذكاء الاصطناعي. لاستخدام أحد هذه النماذج، تحتاج إلى مفتاح API من مزود مدعوم.
للبدء بأسرع وقت ممكن، نوصي باستخدام محرك Lingo.dev — منصتنا المستضافة التي توفر 10,000 رمز من الاستخدام المجاني الشهري:
-
قم بتشغيل الأمر التالي:
npx lingo.dev@latest loginسيؤدي هذا إلى فتح متصفحك الافتراضي ويطلب منك المصادقة.
-
اتبع التعليمات.
الخطوة 7. إنشاء الترجمات
في الدليل الذي يحتوي على ملف i18n.json، قم بتشغيل الأمر التالي:
npx lingo.dev@latest run
هذا الأمر:
- يقرأ ملف
i18n.json. - يجد الملفات التي تحتاج إلى ترجمة.
- يستخرج المحتوى القابل للترجمة من الملفات.
- يستخدم نموذج اللغة الكبير (LLM) المكوّن لترجمة المحتوى المستخرج.
- يكتب المحتوى المترجم مرة أخرى إلى نظام الملفات.
عند إنشاء الترجمات لأول مرة، يتم إنشاء ملف i18n.lock. يحتفظ هذا الملف بسجل للمحتوى الذي تمت ترجمته، مما يمنع إعادة الترجمة غير الضرورية في عمليات التشغيل اللاحقة.
مثال
en/example.jsonc
{
"key1": "Hello, world!", // This is a comment for key1
"key2": "A simple demo app with JSONC features" /* This is a comment for key2 */,
// This is a comment for key3
"key3": "1.0.0",
/* This is a block comment for key4 */
"key4": "[email protected]",
/*
This is a comment for key5
*/
"key5": "🚀",
// This is a comment for key6
"key6": {
// This is a comment for key7
"key7": "Nested value",
},
// This key is locked and should not be changed
"locked_key_1": "This value is locked and should not be changed",
// This key is ignored and should be removed from target locales
"ignored_key_1": "This value is ignored and should not appear in target locales",
}
es/example.jsonc
{
"key1": "¡Hola, mundo!", // This is a comment for key1
"key2": "Una aplicación de demostración simple con características JSONC" /* This is a comment for key2 */,
// This is a comment for key3
"key3": "1.0.0",
/* This is a block comment for key4 */
"key4": "[email protected]",
/*
This is a comment for key5
*/
"key5": "🚀",
// This is a comment for key6
"key6": {
// This is a comment for key7
"key7": "Valor anidado",
},
// This key is locked and should not be changed
"locked_key_1": "This value is locked and should not be changed",
}
i18n.json
{
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"jsonc": {
"include": ["./[locale]/example.jsonc"]
}
},
"$schema": "https://lingo.dev/schema/i18n.json"
}
i18n.lock
version: 1
checksums:
455da9346f4e772000927cd2ff5bb898:
title: 0468579ef2fbc83c9d520c2f2f1c5059
description: 6f4922f45568161a8cdf4ad2299f6d23
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