YAML
ترجمة YAML بالذكاء الاصطناعي باستخدام Lingo.dev CLI
ما هو YAML؟
YAML (YAML Ain't Markup Language) هو تنسيق تسلسل بيانات قابل للقراءة البشرية يُستخدم بشكل شائع في ملفات التكوين وتبادل البيانات وتخزين البيانات المنظمة. يستخدم المسافات البادئة لتمثيل التسلسل الهرمي ويدعم هياكل البيانات المعقدة.
على سبيل المثال:
title: "MyApp"
description: Hello, world!
welcome_message: 'Welcome to MyApp'
user_profile:
display_name: "John Doe"
bio: Software developer
navigation_items:
- "Home"
- "About"
- "Contact"
product:
name: "MyWidget"
tagline: The best widget ever
ما هو Lingo.dev CLI؟
Lingo.dev CLI هو واجهة سطر أوامر مجانية ومفتوحة المصدر لترجمة التطبيقات والمحتوى باستخدام الذكاء الاصطناعي. تم تصميمه ليحل محل برامج إدارة الترجمة التقليدية مع التكامل مع خطوط الأنابيب الحالية.
لمعرفة المزيد، راجع نظرة عامة.
حول هذا الدليل
يشرح هذا الدليل كيفية ترجمة ملفات YAML باستخدام 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. إنشاء المحتوى المصدر
إذا لم تكن قد قمت بذلك بالفعل، قم بإنشاء ملف YAML واحد أو أكثر يحتوي على المحتوى المراد ترجمته. يجب أن تكون هذه الملفات موجودة في مسار يتضمن اللغة المصدر في مكان ما من المسار (على سبيل المثال، كاسم دليل مثل en/ أو كجزء من اسم الملف مثل messages.en.yml).
الخطوة 5. إنشاء حاوية
-
في ملف
i18n.json، أضف كائن"yaml"إلى كائنbuckets:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "yaml": {} } } -
في كائن
"yaml"، قم بتعريف مصفوفة من نمطincludeواحد أو أكثر:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "yaml": { "include": ["./[locale]/example.yml"] } } }تحدد هذه الأنماط الملفات المراد ترجمتها.
الأنماط نفسها:
- يجب أن تحتوي على
[locale]كعنصر نائب للغة المكونة - يمكن أن تشير إلى مسارات الملفات (على سبيل المثال،
"[locale]/config.yml") - يمكن استخدام النجوم كعناصر نائبة بدل (على سبيل المثال،
"[locale]/*.yml")
أنماط glob العودية (على سبيل المثال،
**/*.yml) غير مدعومة. - يجب أن تحتوي على
الخطوة 6. تكوين نموذج لغوي كبير
يستخدم Lingo.dev CLI نماذج لغوية كبيرة (LLMs) لترجمة المحتوى باستخدام الذكاء الاصطناعي. لاستخدام أحد هذه النماذج، تحتاج إلى مفتاح API من مزود مدعوم.
للبدء بأسرع ما يمكن، نوصي باستخدام Lingo.dev Engine — منصتنا المستضافة الخاصة التي توفر 10,000 رمز مميز من الاستخدام المجاني الشهري:
-
قم بتشغيل الأمر التالي:
npx lingo.dev@latest loginسيؤدي هذا إلى فتح المتصفح الافتراضي الخاص بك ومطالبتك بالمصادقة.
-
اتبع التعليمات.
الخطوة 7. إنشاء الترجمات
في الدليل الذي يحتوي على ملف i18n.json، قم بتشغيل الأمر التالي:
npx lingo.dev@latest run
يقوم هذا الأمر بما يلي:
- قراءة ملف
i18n.json. - العثور على الملفات التي تحتاج إلى ترجمة.
- استخراج المحتوى القابل للترجمة من الملفات.
- استخدام نموذج اللغة الكبير المُكوَّن لترجمة المحتوى المستخرج.
- كتابة المحتوى المترجم مرة أخرى إلى نظام الملفات.
في المرة الأولى التي يتم فيها إنشاء الترجمات، يتم إنشاء ملف i18n.lock. يتتبع هذا الملف المحتوى الذي تمت ترجمته، مما يمنع إعادة الترجمة غير الضرورية في عمليات التشغيل اللاحقة.
مثال
en/example.yml
title: "MyApp"
description: Hello, world!
welcome_message: 'Welcome to MyApp'
user_profile:
display_name: "John Doe"
bio: Software developer
navigation_items:
- "Home"
- "About"
- "Contact"
product:
name: "MyWidget"
tagline: The best widget ever
features:
- "Easy to use"
- "Fast and reliable"
settings:
max_users: 100
enabled: true
timeout: 30.5
complex_structure:
level_one:
level_two:
message: "Deep 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.yml
title: "MyApp"
description: "¡Hola, mundo!"
welcome_message: "Bienvenido a MyApp"
user_profile:
display_name: "Juan Pérez"
bio: "Desarrollador de software"
navigation_items:
- "Inicio"
- "Acerca de"
- "Contacto"
product:
name: "MyWidget"
tagline: "El mejor widget de todos"
features:
- "Fácil de usar"
- "Rápido y confiable"
settings:
max_users: 100
enabled: true
timeout: 30.5
complex_structure:
level_one:
level_two:
message: "Texto anidado profundo"
locked_key_1: "This value is locked and should not be changed"
i18n.json
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"yaml": {
"include": ["./[locale]/example.yml"],
"lockedKeys": ["locked_key_1"]
}
}
}
i18n.lock
version: 1
checksums:
1b0d7c9f07dcc31a978bc337763270ea:
title: 7dc70110429d46e3685f385bd2cc941c
description: 0468579ef2fbc83c9d520c2f2f1c5059
welcome_message: d1c3a9f35e377554a4ccaa467ca26614
user_profile/display_name: febee8e9ab40b2fe5106d72675228d00
user_profile/bio: 155ddcb7c93493ac72a37074eea0a653
navigation_items/0: 104a3db3b671c04e167eafbe21e57881
navigation_items/1: 944521eeeed2511833d2299931273c71
navigation_items/2: 9afa39bc47019ee6dec6c74b6273967c
product/name: ed21de171d538a49db999c47875f75a5
product/tagline: b7ac41680e82d75ae7f5774f7ceef1b4
product/features/0: c916ba887951a02793ff851853fd964f
product/features/1: 1c60a04d6890c6ec910a7f2e6ec0ae7b
complex_structure/level_one/level_two/message: b53034560bf657106e5aaea9160e357e