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": "Tags Generation Provider",
"title": "AI Configuration",
"updateFailed": "Failed to update AI settings",
"updateSuccess": "AI Settings updated successfully"
"updateSuccess": "AI Settings updated successfully",
"bestValue": "Beste prijs-kwaliteit",
"bestQuality": "Beste kwaliteit",
"providerOllamaOption": "🦙 Ollama (Local & Free)",
"providerOpenAIOption": "🤖 OpenAI (GPT-5, GPT-4)",
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"saved": "(Opgeslagen)"
},
"aiTest": {
"description": "Test your AI providers for tag generation and semantic search embeddings",
@@ -156,9 +162,9 @@
"analyzing": "Uw notities analyseren voor labelsuggesties...",
"create": "Maken",
"createNewLabel": "Nieuw label maken",
"created": "{count} labels created successfully",
"created": "{count} labels succesvol aangemaakt",
"creating": "Labels maken...",
"description": "I've detected recurring themes in \"{notebookName}\" ({totalNotes} notes). Create labels for them?",
"description": "Ik heb terugkerende themas gedetecteerd in \"{notebookName}\" ({totalNotes} notities). Labels hiervoor maken?",
"error": "Failed to fetch label suggestions",
"new": "(nieuw)",
"noLabelsSelected": "No labels selected",
@@ -580,14 +586,14 @@
"memoryEcho": {
"clickToView": "Klik om te bekijken",
"comparison": {
"clickToView": "Click to view note",
"helpful": "Helpful",
"helpfulQuestion": "Is this comparison helpful?",
"highSimilarityInsight": "These notes deal with the same topic with a high degree of similarity. They could be merged or consolidated.",
"notHelpful": "Not Helpful",
"similarityInfo": "These notes are connected by {similarity}% similarity",
"title": "💡 Note Comparison",
"untitled": "Untitled"
"title": "💡 Notitie vergelijking",
"similarityInfo": "Deze notities zijn verbonden door {similarity}% overeenkomst",
"highSimilarityInsight": "Deze notities gaan over hetzelfde onderwerp met een hoge mate van overeenkomst. Ze kunnen worden samengevoegd.",
"untitled": "Naamloos",
"clickToView": "Klik om notitie te bekijken",
"helpfulQuestion": "Is deze vergelijking nuttig?",
"helpful": "Nuttig",
"notHelpful": "Niet nuttig"
},
"connection": "connection",
"connections": "Connections",
@@ -596,40 +602,40 @@
"description": "Proactive connections between your notes",
"dismiss": "Dismiss for now",
"editorSection": {
"close": "Sluiten",
"compare": "Compare",
"compareAll": "Compare all",
"loading": "Loading...",
"merge": "Merge",
"mergeAll": "Merge all",
"title": "⚡ Connected Notes ({count})",
"view": "View"
"title": "⚡ Verbinde notities ({count})",
"loading": "Laden...",
"view": "Bekijken",
"compare": "Vergelijken",
"merge": "Samenvoegen",
"compareAll": "Alles vergelijken",
"mergeAll": "Alles samenvoegen",
"close": "Sluiten"
},
"fused": "Fused",
"fused": "Samengevoegd",
"fusion": {
"archiveOriginals": "Archive original notes",
"cancel": "Cancel",
"confirmFusion": "Confirm fusion",
"createBacklinks": "Create backlink to original notes",
"edit": "Edit",
"error": "Failed to merge notes",
"finishEditing": "Finish editing",
"generateError": "Failed to generate fusion",
"generateFusion": "Generate the fusion",
"generating": "Generating...",
"keepAllTags": "Keep all tags",
"mergeNotes": "Merge {count} note(s)",
"modify": "Modify",
"noContentReturned": "No fusion content returned from API",
"notesToMerge": "📝 Notes to merge",
"optionalPrompt": "💬 Fusion prompt (optional)",
"optionsTitle": "Fusion options",
"previewTitle": "📝 Preview of merged note",
"promptPlaceholder": "Optional instructions for AI (e.g., 'Keep the formal style of note 1')...",
"success": "Notes merged successfully!",
"title": "🔗 Intelligent Fusion",
"unknownDate": "Unknown date",
"useLatestTitle": "Use latest note as title"
"title": "🔗 Intelligente fusie",
"mergeNotes": "Voeg {count} notitie(s) samen",
"notesToMerge": "📝 Te samenvoegen notities",
"optionalPrompt": "💬 Fusie prompt (optioneel)",
"promptPlaceholder": "Optionele instructies voor AI (bijv. 'Behoud de formele stijl van notitie 1')...",
"generateFusion": "Genereer fusie",
"generating": "Genereren...",
"previewTitle": "📝 Voorbeeld van samengevoegde notitie",
"edit": "Bewerken",
"modify": "Wijzigen",
"finishEditing": "Bewerken voltooid",
"optionsTitle": "Fusie-opties",
"archiveOriginals": "Archiveer originele notities",
"keepAllTags": "Bewaar alle tags",
"useLatestTitle": "Gebruik meest recente notitie als titel",
"createBacklinks": "Maak terugverwijzing naar originele notities",
"cancel": "Annuleren",
"confirmFusion": "Bevestig fusie",
"success": "Notities succesvol samengevoegd!",
"error": "Kan notities niet samenvoegen",
"generateError": "Kan fusie niet genereren",
"noContentReturned": "Geen fusie-inhoud ontvangen van API",
"unknownDate": "Onbekende datum"
},
"helpful": "Helpful",
"insightReady": "Your insight is ready!",