Lingo.dev + .po (Gettext)
تقوم واجهة سطر أوامر Lingo.dev بترجمة ملفات GNU gettext .po مع الحفاظ على مراجع msgid والبيانات الوصفية واتفاقيات التنسيق الخاصة بـ gettext. تتبع واجهة سطر الأوامر مواصفات GNU gettext بدقة، وتعمل مع أدوات xgettext وmsgfmt وPoedit، وتتعامل مع msgctxt للتمييز، وتدعم قواعد صيغ الجمع المعقدة، وتحافظ على جميع معلومات المترجم والبناء.
الإعداد السريع
التكوين لملفات الكائنات المحمولة gettext:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"po": {
"include": ["locale/[locale]/LC_MESSAGES/messages.po"]
}
}
}
تذكير: [locale]
هو عنصر نائب يجب أن يبقى في التكوين حرفيًا، حيث يتم استبداله باللغة الفعلية أثناء تشغيل واجهة سطر الأوامر.
ترجمة ملفات PO
npx lingo.dev@latest i18n
يحافظ على مراجع msgid وتعليقات المترجم والبيانات الوصفية لـ gettext مع تحديث ترجمات msgstr.
التعامل مع هيكل Gettext
ترجمة الرسائل الأساسية
#: src/main.c:42
msgid "Welcome to our application"
msgstr "Bienvenido a nuestra aplicación"
#: src/dialog.c:15
#, c-format
msgid "You have %d new messages"
msgstr "Tienes %d mensajes nuevos"
صيغ الجمع
#: src/counter.c:28
msgid "One file selected"
msgid_plural "%d files selected"
msgstr[0] "Un archivo seleccionado"
msgstr[1] "%d archivos seleccionados"
التعامل مع السياق
#: src/menu.c:12
msgctxt "menu item"
msgid "File"
msgstr "Archivo"
#: src/toolbar.c:8
msgctxt "document type"
msgid "File"
msgstr "Fichero"
الحفاظ على البيانات الوصفية
معلومات رأس PO
# ملف الترجمة لـ MyApp
# حقوق النشر (C) 2024 MyCompany
# يتم توزيع هذا الملف تحت نفس ترخيص حزمة MyApp.
#
msgid ""
msgstr ""
"Project-Id-Version: MyApp 1.0\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2024-01-15 10:30+0000\n"
"Language: es\n"
"Content-Type: text/plain; charset=UTF-8\n"
يتم الحفاظ على جميع البيانات الوصفية للرأس وتعليقات المترجم بالضبط.
أنواع التعليقات
- تعليقات المترجم:
# هذا يحتاج إلى سياق
- التعليقات المستخرجة:
#. ملاحظة المطور حول الاستخدام
- تعليقات المرجع:
#: src/file.c:123
- تعليقات العلامات:
#, c-format, fuzzy
التكوين المتقدم
نطاقات متعددة
"po": {
"include": [
"locale/[locale]/LC_MESSAGES/messages.po",
"locale/[locale]/LC_MESSAGES/errors.po"
]
}
تأمين معرفات الرسائل
"po": {
"include": ["locale/[locale]/LC_MESSAGES/messages.po"],
"lockedKeys": ["version", "copyright"]
}