XML
ترجمة الذكاء الاصطناعي لملفات XML باستخدام واجهة سطر أوامر Lingo.dev
ما هي لغة XML؟
XML (لغة الترميز القابلة للتوسيع) هي لغة ترميز تحدد قواعد لتشفير المستندات بتنسيق يمكن قراءته من قبل الإنسان والآلة. تُستخدم بشكل شائع لملفات التكوين وتبادل البيانات والمحتوى المنظم.
على سبيل المثال:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<title>مرحباً، عالم!</title>
<description>
<summary>تطبيق عرض بسيط</summary>
<details>محتوى مثال أساسي</details>
</description>
<image src="photo.jpg" alt="صورة توضيحية" title="انقر للعرض"/>
<link href="example.com" label="انقر هنا">تعلم المزيد</link>
<message>
<greeting>مرحباً بك!</greeting>
<body>أهلاً بك في التطبيق</body>
</message>
</root>
ما هي واجهة سطر أوامر Lingo.dev؟
واجهة سطر أوامر Lingo.dev هي أداة مجانية ومفتوحة المصدر لترجمة التطبيقات والمحتوى باستخدام الذكاء الاصطناعي. تم تصميمها لتحل محل برامج إدارة الترجمة التقليدية مع التكامل مع خطوط الإنتاج الحالية.
لمعرفة المزيد، راجع نظرة عامة.
حول هذا الدليل
يشرح هذا الدليل كيفية ترجمة ملفات XML باستخدام واجهة سطر أوامر 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. إنشاء المحتوى المصدر
إذا لم تقم بذلك بالفعل، قم بإنشاء ملف XML واحد أو أكثر يحتوي على المحتوى المراد ترجمته. يجب أن تكون هذه الملفات موجودة في مسار يتضمن اللغة المصدر في مكان ما في المسار (مثل اسم دليل مثل en/ أو كجزء من اسم الملف مثل messages.en.xml).
الخطوة 5. إنشاء حاوية
-
في ملف
i18n.json، أضف كائن"xml"إلى كائنbuckets:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "xml": {} } } -
في كائن
"xml"، حدد مصفوفة تحتوي على نمطincludeواحد أو أكثر:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "xml": { "include": ["./[locale]/example.xml"] } } }تحدد هذه الأنماط الملفات التي سيتم ترجمتها.
الأنماط نفسها:
- يجب أن تحتوي على
[locale]كعنصر نائب للغة المكونة - يمكن أن تشير إلى مسارات الملفات (مثل
"[locale]/config.xml") - يمكن استخدام علامات النجمة كعناصر نائبة عامة (مثل
"[locale]/*.xml")
أنماط glob المتكررة (مثل
**/*.xml) غير مدعومة. - يجب أن تحتوي على
الخطوة 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.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<title>Hello, world!</title>
<description>
<summary>Simple demo app</summary>
<details>Basic example content</details>
</description>
<image src="photo.jpg" alt="Example photo" title="Click to view"/>
<link href="example.com" label="Click here">Learn more</link>
<button type="submit" value="Submit" placeholder="Enter text">Submit</button>
<message>
<greeting>Hello there!</greeting>
<body>Welcome to the app</body>
<signature>Thanks, MyApp Team</signature>
</message>
</root>
es/example.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<title>¡Hola, mundo!</title>
<description>
<summary>Aplicación de demostración simple</summary>
<details>Contenido de ejemplo básico</details>
</description>
<image src="photo.jpg" alt="Foto de ejemplo" title="Haz clic para ver"/>
<link href="example.com" label="Haz clic aquí">Aprender más</link>
<button type="submit" value="Enviar" placeholder="Ingresa texto">Enviar</button>
<message>
<greeting>¡Hola!</greeting>
<body>Bienvenido a la aplicación</body>
<signature>Gracias, Equipo de MyApp</signature>
</message>
</root>
i18n.json
{
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"xml": {
"include": ["./[locale]/example.xml"]
}
},
"$schema": "https://lingo.dev/schema/i18n.json"
}
i18n.lock
version: 1
checksums:
ec06a6ebae97ffd5f7afc99d9a8f051b:
root/title: 0468579ef2fbc83c9d520c2f2f1c5059
root/description/summary: f2c85bf6eeebeea33609e04598201bb6
root/description/details: 2ee85b8f2f0f1bc008d9cf1f916cb09c
root/image/%24/src: 3ce26f0a5486adf10e1b7eee1b866a70
root/image/%24/alt: 94058fbed56fffaef2e9bbea59ba4a54
root/image/%24/title: 60487c71b570d9dedca6fddd4a75d16a
root/link/_: e598091d132f890c37a6d4ed94f6d794
root/link/%24/href: 285d79d2783cf0769ab9e767362c1499
root/link/%24/label: 26ce69aad587f70d47e7606436bf1d6d
root/button/_: 7c91ef5f747eea9f77a9c4f23e19fb2e
root/button/%24/type: fa8748b22d5bac98fdcd57e3d6594cf3
root/button/%24/value: 7c91ef5f747eea9f77a9c4f23e19fb2e
root/button/%24/placeholder: 7b5d59cee6952db66043a4b289b51884
root/section/article/paragraph/sentence: 28ca53c71a2e3e3de79c892a9b193b1a
root/meta/%24/name: d097029e873a4b19132e2603bd2c9fe4
root/meta/%24/content: 0811ae3ab84aa87205383c3d8ac42bf3
root/message/greeting: 85559fc839c5181b7958654e62c987d5
root/message/body: ed0d4b1cde20d045f9f8c5007c784b0b
root/message/signature: 181c8c304980949e101865098f548705