ملفات PO
الترجمة بالذكاء الاصطناعي لملفات PO باستخدام Lingo.dev CLI
ما هي ملفات PO؟
ملفات PO (Portable Object) هي تنسيق ملفات نصية يستخدمه GNU gettext لتدويل البرمجيات. تخزن النصوص الأصلية إلى جانب ترجماتها وتُستخدم على نطاق واسع في مشاريع البرمجيات مفتوحة المصدر.
على سبيل المثال:
msgid ""
msgstr ""
"Project-Id-Version: Example Project 1.0\n"
"Language: en\n"
msgid "Welcome"
msgstr "Welcome"
msgctxt "navigation"
msgid "Home"
msgstr "Home"
msgid "You have %d message"
msgid_plural "You have %d messages"
msgstr[0] "You have %d message"
msgstr[1] "You have %d messages"
ما هو Lingo.dev CLI؟
Lingo.dev CLI هو واجهة سطر أوامر مجانية ومفتوحة المصدر لترجمة التطبيقات والمحتوى باستخدام الذكاء الاصطناعي. صُمم ليحل محل برامج إدارة الترجمة التقليدية مع التكامل مع خطوط الأنابيب الحالية.
لمعرفة المزيد، راجع نظرة عامة.
حول هذا الدليل
يشرح هذا الدليل كيفية ترجمة ملفات PO باستخدام 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. إنشاء المحتوى المصدر
إذا لم تكن قد قمت بذلك بالفعل، قم بإنشاء ملف PO واحد أو أكثر يحتوي على المحتوى المراد ترجمته. يجب أن تكون هذه الملفات موجودة في مسار يتضمن اللغة المصدر في مكان ما من المسار (على سبيل المثال، كاسم دليل مثل en/ أو كجزء من اسم الملف مثل messages.en.po).
الخطوة 5. إنشاء حاوية
-
في ملف
i18n.json، أضف كائن"po"إلى كائنbuckets:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "po": {} } } -
في كائن
"po"، قم بتعريف مصفوفة من نمطincludeواحد أو أكثر:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "po": { "include": ["./[locale]/example.po"] } } }تحدد هذه الأنماط الملفات المراد ترجمتها.
الأنماط نفسها:
- يجب أن تحتوي على
[locale]كعنصر نائب للغة المكونة - يمكن أن تشير إلى مسارات الملفات (على سبيل المثال،
"[locale]/messages.po") - يمكن استخدام النجوم كعناصر نائبة بدل (على سبيل المثال،
"[locale]/*.po")
أنماط glob العودية (على سبيل المثال،
**/*.po) غير مدعومة. - يجب أن تحتوي على
الخطوة 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.po
msgid ""
msgstr ""
"Project-Id-Version: Example Project 1.0\n"
"Language: en\n"
msgid "Welcome"
msgstr "Welcome"
msgctxt "navigation"
msgid "Home"
msgstr "Home"
msgid "You have %d message"
msgid_plural "You have %d messages"
msgstr[0] "You have %d message"
msgstr[1] "You have %d messages"
msgid "Save"
msgstr "Save"
es/example.po
msgid ""
msgstr ""
"Project-Id-Version: Example Project 1.0\n"
"Language: es\n"
msgid "Welcome"
msgstr "Bienvenido"
msgctxt "navigation"
msgid "Home"
msgstr "Inicio"
msgid "You have %d message"
msgid_plural "You have %d messages"
msgstr[0] "Tienes %d mensaje"
msgstr[1] "Tienes %d mensajes"
msgid "Save"
msgstr "Guardar"
i18n.json
{
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"po": {
"include": ["./[locale]/example.po"]
}
},
"$schema": "https://lingo.dev/schema/i18n.json"
}
i18n.lock
version: 1
checksums:
cdba37b4ade3da08cf12eccfde49d625:
Welcome/singular: 3180ad6b8de344b781637750259e0f53
Home/singular: 104a3db3b671c04e167eafbe21e57881
You%20have%20%25d%20message/singular: 1691abfe2c5d017cda86e298d34f3524
You%20have%20%25d%20message/plural: 2d37831bf51cc2cf75e812c0e61c6861
Save/singular: f7a2929f33bc420195e59ac5a8bcd454
Cancel/singular: 2e2a849c2223911717de8caa2c71bade
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
Name/singular: 9368b5a047572b6051f334af5aa76819
Email%20Address/singular: 0ee22bbbe989a0c61a18023407d12dc2
Message/singular: f2f72126bd244cfc534eab395e054362
Loading.../singular: 82b4ea7ed1439094d7c4be13aaba9a66
Success!%20Changes%20saved./singular: 906371aaeec474803e22ae959605dad8
Error%3A%20Request%20failed./singular: cdeaab2374e34c0e396cdb2596a9824e
Add%20to%20Cart/singular: c93a29ccf502ff71bf08924dcdea9179
Out%20of%20Stock/singular: 6673fc95c2cee3c713e0d60c8184e289
Price%3A%20%24%25s/singular: a860f7b395e4a9d916a48717f9f8837a