fix: comprehensive i18n — replace hardcoded French/English strings with t() calls
Some checks failed
Deploy to Production / Build and Deploy (push) Failing after 1m7s

Replaced ~100+ hardcoded French and English text strings across 30+ components
with proper i18n t() calls. Added 57 new translation keys to all 15 locale files
(ar, de, en, es, fa, fr, hi, it, ja, ko, nl, pl, pt, ru, zh).

Key changes:
- contextual-ai-chat.tsx: 30 French strings → t() (actions, toasts, labels, placeholders)
- ai-chat.tsx: 15 French/English strings → t() (header, tabs, welcome, insights, history)
- note-inline-editor.tsx: 20 French fallbacks removed (toolbar, save status, checklist)
- lab-skeleton.tsx: French loading text → t()
- admin-header.tsx, header.tsx, editor-connections-section.tsx: French fallbacks removed
- New AI chat component, agent cards, sidebar, settings panel i18n cleanup

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-04-26 21:14:45 +02:00
parent e358171c45
commit 153c921960
60 changed files with 4125 additions and 1677 deletions

View File

@@ -81,7 +81,30 @@
"noModels": "لا توجد نماذج. انقر على ↺",
"modelsAvailable": "{count} نموذج متاح",
"enterUrlToLoad": "أدخل الرابط وانقر على ↺ لتحميل النماذج",
"currentProvider": "(الحالي: {provider})"
"currentProvider": "(الحالي: {provider})",
"pageTitle": "إدارة الذكاء الاصطناعي",
"pageDescription": "مراقبة وتكوين ميزات الذكاء الاصطناعي",
"configure": "تكوين",
"features": "ميزات الذكاء الاصطناعي",
"providerStatus": "حالة مزودي الذكاء الاصطناعي",
"recentRequests": "طلبات الذكاء الاصطناعي الأخيرة",
"comingSoon": "قريباً",
"activeFeatures": "الميزات النشطة",
"successRate": "معدل النجاح",
"avgResponseTime": "متوسط وقت الاستجابة",
"configuredProviders": "المزودون المكوّنون",
"settingUpdated": "تم تحديث الإعداد",
"updateFailedShort": "فشل في التحديث",
"titleSuggestions": "اقتراحات العناوين",
"titleSuggestionsDesc": "يقترح عناوين للملاحظات بعد 50+ كلمة",
"aiAssistant": "مساعد الذكاء الاصطناعي",
"aiAssistantDesc": "تفعيل المحادثة مع الذكاء الاصطناعي وأدوات تحسين النص",
"memoryEchoFeature": "لاحظت شيئاً ما...",
"memoryEchoFeatureDesc": "تحليل يومي للروابط بين ملاحظاتك",
"languageDetection": "اكتشاف اللغة",
"languageDetectionDesc": "يكتشف تلقائياً لغة كل ملاحظة",
"autoLabeling": "التصنيف التلقائي",
"autoLabelingDesc": "يقترح ويطبق التصنيفات تلقائياً"
},
"aiTest": {
"description": "اختبر مزودي الذكاء الاصطناعي لتوليد الوسوم وتضمينات البحث الدلالي",
@@ -195,7 +218,9 @@
"email": "البريد الإلكتروني",
"name": "الاسم",
"role": "الدور"
}
},
"title": "المستخدمون",
"description": "إدارة مستخدمي التطبيق والصلاحيات"
},
"chat": "AI Chat",
"lab": "The Lab",
@@ -231,7 +256,18 @@
"testing": "جارٍ الاختبار...",
"testSearch": "اختبار البحث على الويب"
},
"settingsDescription": "تكوين الإعدادات العامة للتطبيق"
"settingsDescription": "تكوين الإعدادات العامة للتطبيق",
"dashboard": {
"title": "لوحة التحكم",
"description": "نظرة عامة على مقاييس التطبيق",
"recentActivity": "النشاط الأخير",
"recentActivityPlaceholder": "سيتم عرض النشاط الأخير هنا."
},
"error": {
"title": "حدث خطأ في الإدارة",
"description": "فشل عرض هذه الصفحة. يمكنك إعادة المحاولة.",
"retry": "إعادة المحاولة"
}
},
"ai": {
"analyzing": "الذكاء الاصطناعي يحلل...",
@@ -322,7 +358,57 @@
"translationFailed": "فشلت الترجمة",
"undo": "تراجع عن الذكاء الاصطناعي",
"undoAI": "تراجع عن تحويل الذكاء الاصطناعي",
"undoApplied": "تم استعادة النص الأصلي"
"undoApplied": "تم استعادة النص الأصلي",
"minWordsError": "يجب أن تحتوي الملاحظة على 5 كلمات على الأقل لاستخدام إجراءات الذكاء الاصطناعي.",
"genericError": "خطأ في الذكاء الاصطناعي",
"actionError": "خطأ أثناء تنفيذ إجراء الذكاء الاصطناعي",
"appliedToNote": "تم التطبيق في الملاحظة",
"applyToNote": "تطبيق في الملاحظة",
"undoLastAction": "إلغاء آخر إجراء ذكاء اصطناعي",
"selectContext": "اختيار السياق...",
"selectNotebook": "اختيار دفتر",
"chatPlaceholder": "اطلب من الذكاء الاصطناعي تعديل أو تلخيص أو صياغة...",
"assistantTitle": "مساعد الذكاء الاصطناعي",
"currentNote": "الملاحظة الحالية",
"shrinkPanel": "تصغير اللوحة",
"expandPanel": "توسيع اللوحة",
"chatTab": "دردشة",
"noteActions": "إجراءات الملاحظة",
"askToStart": "اطرح سؤالاً على المساعد للبدء.",
"contextLabel": "السياق",
"thisNote": "هذه الملاحظة",
"allMyNotes": "جميع ملاحظاتي",
"notebookGeneric": "دفتر",
"writingTone": "نبرة الكتابة",
"askAboutThisNote": "اسأل الذكاء الاصطناعي عن هذه الملاحظة...",
"askAboutYourNotes": "اسأل الذكاء الاصطناعي عن ملاحظاتك...",
"webSearchLabel": "بحث الويب",
"newLineHint": "Shift+Enter = سطر جديد",
"resultLabel": "النتيجة",
"discardAction": "تجاهل",
"transformationsDesc": "التحويلات — مطبقة مباشرة في الملاحظة",
"writeMinWordsAction": "اكتب 5 كلمات على الأقل لتفعيل إجراءات الذكاء الاصطناعي.",
"processingAction": "جاري المعالجة...",
"action": {
"clarify": "توضيح",
"shorten": "تقصير",
"improve": "تحسين",
"toMarkdown": "إلى Markdown"
},
"openAssistant": "فتح مساعد الذكاء الاصطناعي",
"poweredByMomento": "مدعوم من Momento AI",
"welcomeMsg": "مرحبًا! أنا مساعدك الذكي. كيف يمكنني مساعدتك في ملاحظاتك اليوم؟ يمكنني تحسين النبرة أو توسيع الرسائل أو تلخيص المحتوى.",
"summaryLast5": "ملخص آخر 5 ملاحظات",
"analyzingProgress": "جاري التحليل...",
"generateInsightsBtn": "إنشاء رؤى",
"newDiscussion": "نقاش جديد",
"noRecentConversations": "لا توجد محادثات حديثة.",
"discussionContextLabel": "سياق النقاش",
"webSearchNotConfigured": "بحث الويب (غير مكوّن)",
"historyTab": "السجل",
"insightsTab": "رؤى",
"aiCopilot": "مساعد ذكي",
"suggestTitle": "اقتراح عنوان بالذكاء الاصطناعي"
},
"aiSettings": {
"description": "تكوين ميزاتك وتفضيلاتك المدعومة بالذكاء الاصطناعي",
@@ -884,7 +970,12 @@
"viewModeGroup": "وضع عرض الملاحظات",
"reorderTabs": "إعادة ترتيب علامة التبويب",
"modified": "معدلة",
"created": "منشأة"
"created": "منشأة",
"loading": "جاري التحميل...",
"exportPDF": "تصدير PDF",
"savedStatus": "تم الحفظ",
"dirtyStatus": "معدّل",
"completedLabel": "مكتمل"
},
"pagination": {
"next": "→",
@@ -976,7 +1067,8 @@
"searchPlaceholder": "Search your notes...",
"searching": "Searching...",
"semanticInProgress": "AI search in progress...",
"semanticTooltip": "AI semantic search"
"semanticTooltip": "AI semantic search",
"disabledAdmin": "البحث معطل في وضع المسؤول"
},
"semanticSearch": {
"exactMatch": "تطابق تام",
@@ -1417,5 +1509,9 @@
"markUndone": "وضع علامة غير مكتمل",
"todayAt": "اليوم في {time}",
"tomorrowAt": "غداً في {time}"
},
"lab": {
"initializing": "تهيئة المساحة",
"loadingIdeas": "جاري تحميل أفكارك..."
}
}