fix: i18n system overhaul and sidebar UI bugs

- Fix LanguageProvider: add RTL support (ar/fa), translation caching,
  prevent blank flash during load, browser language detection
- Fix detect-user-language: extend whitelist from 5 to all 15 languages
- Remove hardcoded initialLanguage="fr" from auth layout
- Complete fr.json translation (all sections translated from English)
- Add missing admin.ai keys to all 13 non-English locales
- Translate ai.autoLabels, ai.batchOrganization, memoryEcho sections
  for all locales
- Remove duplicate top-level autoLabels/batchOrganization from en.json
- Fix notebook creation: replace window.location.reload() with
  createNotebookOptimistic + router.refresh()
- Fix notebook name truncation in sidebar with min-w-0
- Remove redundant router.refresh() after note creation in page.tsx

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Sepehr Ramezani
2026-03-29 22:14:05 +02:00
parent 8bf56cd8cd
commit 8daf50ac3f
27 changed files with 1210 additions and 936 deletions

View File

@@ -63,7 +63,13 @@
"tagsGenerationProvider": "ارائه‌دهنده تولید برچسب",
"title": "پیکربندی هوش مصنوعی",
"updateFailed": "شکست در به‌روزرسانی تنظیمات هوش مصنوعی",
"updateSuccess": "تنظیمات هوش مصنوعی با موفقیت به‌روزرسانی شد"
"updateSuccess": "تنظیمات هوش مصنوعی با موفقیت به‌روزرسانی شد",
"bestValue": "بهترین ارزش",
"bestQuality": "بهترین کیفیت",
"providerOllamaOption": "🦙 Ollama (Local & Free)",
"providerOpenAIOption": "🤖 OpenAI (GPT-5, GPT-4)",
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(ذخیره شد)"
},
"aiTest": {
"description": "تست ارائه‌دهندگان هوش مصنوعی برای تولید برچسب و تعبیه‌های جستجوی معنایی",
@@ -153,34 +159,36 @@
"analyzing": "در حال تحلیل هوش مصنوعی...",
"assistant": "دستیار هوش مصنوعی",
"autoLabels": {
"analyzing": "در حال تحلیل یادداشت‌های شما برای پیشنهادات برچسب...",
"analyzing": "تحلیل یادداشت‌های شما...",
"create": "ایجاد",
"createNewLabel": "Create this new label and add it",
"created": "{count} labels created successfully",
"createNewLabel": "ایجاد این برچسب جدید و اضافه کردن آن",
"created": "{count} برچسب با موفقیت ایجاد شد",
"creating": "در حال ایجاد برچسب‌ها...",
"description": "I've detected recurring themes in \"{notebookName}\" ({totalNotes} notes). Create labels for them?",
"error": "Failed to fetch label suggestions",
"description": "من موضوعات تکراری در \"{notebookName}\" ({totalNotes} یادداشت) تشخیص دادم. برچسب برای آنها ایجاد شود؟",
"error": "دریافت پیشنهادهای برچسب ناموفق",
"new": "(جدید)",
"noLabelsSelected": "No labels selected",
"note": "note",
"notes": "notes",
"title": "پیشنهادات برچسب",
"typeContent": "Type content to get label suggestions..."
"noLabelsSelected": "برچسبی انتخاب نشده",
"note": "یادداشت",
"notes": "یادداشت",
"title": "پیشنهادهای برچسب جدید",
"typeContent": "برای دریافت پیشنهاد برچسب محتوا وارد کنید...",
"notesCount": "{count} یادداشت",
"typeForSuggestions": "برای دریافت پیشنهاد برچسب محتوا وارد کنید..."
},
"batchOrganization": {
"analyzing": "Analyzing your notes...",
"apply": "Apply",
"applyFailed": "Failed to apply organization plan",
"applying": "Applying...",
"description": "هوش مصنوعی یادداشت‌های شما را تحلیل کرده و پیشنهاد می‌کند آن‌ها را در دفترچه‌ها سازماندهی کنید.",
"error": "Failed to create organization plan",
"noNotebooks": "No notebooks available. Create notebooks first to organize your notes.",
"noNotesSelected": "No notes selected",
"noSuggestions": "AI could not find a good way to organize these notes.",
"selectAllIn": "Select all notes in {notebook}",
"selectNote": "Select note: {title}",
"success": "{count} notes moved successfully",
"title": "Organize with AI"
"analyzing": "تحلیل یادداشت‌های شما...",
"apply": "اعمال",
"applyFailed": "اعمال طرح سازماندهی ناموفق",
"applying": "در حال اعمال...",
"description": "هوش مصنوعی یادداشت‌های شما را تحلیل و پیشنهاد سازماندهی در دفترچه‌ها را می‌دهد.",
"error": "ایجاد طرح سازماندهی ناموفق",
"noNotebooks": "دفترچه‌ای موجود نیست. ابتدا دفترچه ایجاد کنید.",
"noNotesSelected": "یادداشتی انتخاب نشده",
"noSuggestions": "هوش مصنوعی نتوانست روش خوبی برای سازماندهی این یادداشت‌ها پیدا کند.",
"selectAllIn": "انتخاب تمام یادداشت‌ها در {notebook}",
"selectNote": "انتخاب یادداشت: {title}",
"success": "{count} یادداشت با موفقیت جابجا شد",
"title": "سازماندهی با هوش مصنوعی"
},
"clarify": "شفاف‌سازی",
"clickToAddTag": "برای افزودن این برچسب کلیک کنید",
@@ -192,8 +200,8 @@
"improveStyle": "بهبود سبک",
"languageDetected": "زبان شناسایی شد",
"notebookSummary": {
"regenerate": "تولید مجدد خلاصه",
"regenerating": "در حال تولید مجدد خلاصه..."
"regenerate": "بازسازی خلاصه",
"regenerating": "در حال بازسازی خلاصه..."
},
"original": "اصلی",
"poweredByAI": "قدرت گرفته از هوش مصنوعی",