قفل المفاتيح
يتيح لك Lingo.dev CLI قفل مفاتيح ترجمة محددة بحيث تظل قيمها متطابقة عبر جميع اللغات. عند قفل المفاتيح، يستبعدها CLI من معالجة الترجمة وينسخ قيم المصدر مباشرة إلى جميع الملفات المستهدفة.
إعداد قفل المفاتيح
أضف lockedKeys إلى تكوين الحاوية الخاصة بك في i18n.json:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"lockedKeys": ["system/component", "config/engine", "modules/processor"]
}
}
}
يستخدم مصفوفة lockedKeys تدوين الشرطة المائلة للأمام (/) لتحديد المفاتيح المتداخلة والنجمة (*) لمطابقة مفاتيح متعددة.
كيفية عمل قفل المفاتيح
أثناء معالجة الترجمة، يقوم Lingo.dev CLI بـ:
- تحديد المفاتيح المقفلة من التكوين الخاص بك
- استبعادها من الترجمة — لا يتم إرسال المحتوى المقفل أبدًا إلى نماذج الذكاء الاصطناعي
- نسخ قيم المصدر مباشرة إلى جميع الملفات المستهدفة
- الحفاظ على الاتساق عبر جميع اللغات
مثال على سير العمل:
// locales/en.json (source)
{
"welcome": "Welcome to our platform",
"system": {
"component": "Lingo.dev CLI",
"processor": "Translation Engine"
},
"config": {
"engine": "Lingo.dev Engine"
}
}
مع تكوين المفاتيح المقفلة:
{
"lockedKeys": ["system/component", "system/processor", "config/engine"]
}
الترجمة الإسبانية المُنشأة:
// locales/es.json (generated)
{
"welcome": "Bienvenido a nuestra plataforma",
"system": {
"component": "Lingo.dev CLI",
"processor": "Translation Engine"
},
"config": {
"engine": "Lingo.dev Engine"
}
}
تتم ترجمة welcome فقط، بينما تظل المفاتيح المقفلة مطابقة للمصدر.
بدون قفل المفاتيح، قد تتم ترجمة "Lingo.dev Engine" بشكل خاطئ إلى "Motor de Lingo.dev" بالإسبانية أو "Lingo.devエンジン" باليابانية، وهو ما لا نريده في هذا المثال.
مسارات المفاتيح المتداخلة
استخدم تدوين الشرطة المائلة للأمام (/) لقفل المفاتيح على أي عمق:
{
"lockedKeys": [
"system/engine/component",
"modules/ai/processor",
"config/translation/handler"
]
}
يعمل هذا التدوين مع الهياكل المتداخلة المعقدة:
// Source structure
{
"system": {
"engine": {
"component": "Lingo.dev Engine"
}
}
}
يقفل المسار system/engine/component قيمة اسم المكون.
المفاتيح التي تحتوي على نقاط
يتعامل تدوين الشرطة المائلة للأمام مع المفاتيح التي تحتوي على نقاط في أسمائها:
// Source with dotted key names
{
"modules": {
"ai.translation": "AI Translation",
"content.processor": "Content Processor"
}
}
قفل هذه المفاتيح باستخدام:
{
"lockedKeys": ["modules/ai.translation", "modules/content.processor"]
}
أنواع متعددة من الحاويات
يمكن أن تحتوي تنسيقات الملفات المختلفة على مفاتيح مقفلة مختلفة:
{
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"lockedKeys": ["config/engine", "system/component"]
},
"yaml": {
"include": ["translations/[locale].yml"],
"lockedKeys": ["service/name", "module/title"]
}
}
}
يحتفظ كل نوع من أنواع الحاويات بقائمة المفاتيح المقفلة الخاصة به بناءً على بنية المحتوى.
قيم المصفوفات
بالنسبة للمفاتيح ذات قيم المصفوفات، أضف /* بعد اسم المفتاح:
// Source file
{
"navigation": {
"menuItems": ["Home", "About", "Contact"],
"title": "Main Navigation"
}
}
قفل المصفوفة باستخدام:
{
"lockedKeys": ["navigation/menuItems/*"]
}
النتيجة:
// locales/es.json
{
"navigation": {
"menuItems": ["Home", "About", "Contact"],
"title": "Navegación Principal"
}
}