التكامل مع أطر العمل
إعداد خطوة بخطوة لـ champollion مع أطر العمل الشائعة.
- Hugo
- Next.js (next-intl)
- React (react-i18next)
Hugo (TOML / YAML / Markdown)
بنية المشروع
يستخدم Hugo i18n/ لترجمات النصوص وcontent/ لمحتوى الصفحات:
my-hugo-site/
├── i18n/
│ ├── en.toml ← source of truth
│ ├── fr.toml
│ └── ja.toml
├── content/
│ ├── posts/
│ │ ├── hello.md ← source (English)
│ │ ├── hello.fr.md
│ │ └── hello.ja.md
│ └── about.md
└── .env.local
الإعداد
npm install --save-dev champollion
{
"version": 3,
"inputLocale": "en",
"localesDir": "./i18n",
"contentDir": "./content",
"format": "auto",
"languages": ["fr", "de", "ja", "es", "ko", "zh"]
}
champollion sync # sync i18n string files + content files
champollion sync --dry # preview changes without writing
تفاصيل ترجمة المحتوى
المقدمة (Front matter): يدعم محددات YAML (---) وTOML (+++) معًا. يترجم title وdescription وsummary وsubtitle وcaption وlinkTitle افتراضيًا. تُحفظ جميع الحقول الأخرى (date وdraft وtags وweight وslug وغيرها) كما هي. يمكنك التخصيص باستخدام translatableFields في ملف الإعدادات الخاص بك.
حماية الكتل: تُحمى كتل التعليمات البرمجية، والرموز المختصرة (shortcodes) الخاصة بـ Hugo، والتعليمات البرمجية المضمنة، وHTML الخام تلقائيًا باستخدام عناصر نائبة حارسة بترميز Unicode. وتمرّ دون أي تعديل.
اصطلاح تسمية الملفات: يتبع نمط Hugo للترجمة حسب اسم الملف:
my-post.md→my-post.fr.mdmy-post.en.md→my-post.fr.md(يزيل لاحقة اللغة المصدر)
تخطي الموجود: لا تتم الكتابة فوق الملفات المترجمة الموجودة أبدًا. احذف الملف الهدف لإجبار إعادة الترجمة.
صيغ الجمع
تدعم ملفات اللغة بصيغتي TOML وYAML صيغ الجمع وفق معيار CLDR:
[items]
one = "{{ .Count }} item"
other = "{{ .Count }} items"
تُمثَّل داخليًا كـ items.one وitems.other لأغراض المقارنة، ثم يُعاد تسلسلها إلى التنسيق المقسّم الصحيح عند الكتابة.
next-intl (JSON)
بنية المشروع
my-app/
├── messages/
│ └── en.json ← source of truth
├── src/
│ ├── i18n/
│ │ ├── routing.ts
│ │ └── request.ts
│ └── middleware.ts
└── .env.local
الإعداد
npm install --save-dev champollion
{
"version": 3,
"inputLocale": "en",
"localesDir": "./messages",
"languages": ["fr", "de", "ja", "es", "ko", "zh", "pt", "ar"]
}
npx champollion sync
يُنشئ messages/fr.json وmessages/ja.json وغيرها — مترجمة بالكامل مع الحفاظ على بنية المفاتيح المتداخلة لديك. ويلتقطها next-intl تلقائيًا.
سير عمل التطوير
{
"scripts": {
"dev": "champollion watch & next dev",
"i18n:sync": "champollion sync",
"i18n:audit": "champollion audit"
}
}
react-i18next (JSON)
بنية الملفات المسطّحة (موصى بها)
locales/
├── en.json
├── fr.json
└── ja.json
{
"version": 3,
"inputLocale": "en",
"localesDir": "./locales",
"languages": ["fr", "de", "ja"]
}
npx champollion sync
بنية المجلدات المتداخلة
إذا كنت تستخدم بنية {locale}/{namespace}.json، فأنشئ سكربت مزامنة للتسطيح ← الترجمة ← إلغاء التسطيح. راجع وثائق react-i18next لمزيد من التفاصيل.