Lingo.dev + .json-dictionary
واجهة سطر أوامر Lingo.dev تقوم بترجمة ملفات JSON حيث تحتوي كل سلسلة قابلة للترجمة على مفاتيح لغات متعددة في كائن واحد. على عكس تنسيق JSON القياسي الذي يفصل اللغات في ملفات مختلفة، يخزن json-dictionary جميع الترجمات معًا بمفاتيح خاصة باللغة مثل {"en": "Hello", "es": "Hola"}
.
الإعداد السريع
قم بإنشاء ملف تكوين i18n.json
:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json-dictionary": {
"include": ["content/pages.json"]
}
}
}
هيكل الملف
تنسيق json-dictionary يخزن الترجمات كأشياء متداخلة مع مفاتيح اللغة:
{
"title": {
"en": "Welcome to our site",
"es": "Bienvenido a nuestro sitio"
},
"navigation": {
"home": {
"en": "Home",
"es": "Inicio"
},
"about": {
"en": "About Us",
"es": "Acerca de nosotros"
}
},
"staticValue": "This won't be translated",
"pages": [
{
"title": {
"en": "Page One",
"es": "Página Uno"
}
}
]
}
ترجمة كل شيء
npx lingo.dev@latest i18n
يقوم سطر الأوامر تلقائيًا بما يلي:
- استخراج الكائنات القابلة للترجمة فقط (تلك التي تحتوي على مفاتيح اللغة)
- الحفاظ على القيم غير القابلة للترجمة دون تغيير
- إضافة مفاتيح اللغة المستهدفة بجانب المفاتيح الموجودة
- الحفاظ على ترتيب مفاتيح اللغة المصدر (المصدر أولاً، ثم الآخرين أبجديًا)
سلوك المفاتيح
اكتشاف القابلية للترجمة: فقط الكائنات التي تحتوي على مفتاح اللغة المصدر تعتبر قابلة للترجمة. النصوص البسيطة والأرقام والقيم المنطقية والكائنات بدون مفاتيح اللغة تبقى دون تغيير.
ترتيب المفاتيح: عند إضافة الترجمات، تظهر اللغة المصدر أولاً، تليها اللغات الأخرى بترتيب أبجدي:
{
"message": {
"en": "Original text",
"de": "Deutscher Text",
"es": "Texto en español",
"fr": "Texte français"
}
}
دعم التداخل: يعمل مع الهياكل المتداخلة بعمق والمصفوفات التي تحتوي على كائنات قابلة للترجمة.
الإعدادات المتقدمة
استبعاد الملفات
"json-dictionary": {
"include": ["content/*.json"],
"exclude": ["content/config.json"]
}