i18n: complete audit — 55 new keys, all hardcoded strings converted to t()
- Added 4 missing keys: button.cancel, toast.dir_renamed, toast.file_deleted, toast.file_renamed
- Replaced 41 hardcoded showToast() strings with t() calls across 13 JS files
- Replaced 10 hardcoded textContent/title/innerHTML strings with t() calls
- Fixed theme labels: Sombre/Clair -> t('theme.dark')/t('theme.light')
- Fixed vault selector: Tous les vaults -> t('help.all_vaults')
- Both locale files: 983 -> 1032 keys, perfectly matched
- Bidirectional EN<->FR switching verified in browser
This commit is contained in:
@@ -984,5 +984,56 @@
|
||||
"help.graph_nodes": "Nœuds",
|
||||
"help.graph_info": "Panneau d'info",
|
||||
"help.graph_export": "Export PNG",
|
||||
"help.graph_context": "Menu contextuel"
|
||||
}
|
||||
"help.graph_context": "Menu contextuel",
|
||||
"ai.completion_added": "AI: complétion ajoutée",
|
||||
"ai.invalid_api_key": "AI: clé API invalide. Vérifiez DEEPSEEK_API_KEY dans .env",
|
||||
"ai.processing": "⏳ AI: traitement en cours...",
|
||||
"ai.quota_exceeded": "AI: quota dépassé ou paiement requis",
|
||||
"ai.select_text": "AI: sélectionnez du texte à traiter",
|
||||
"ai.text_processed": "AI: texte traité ✓",
|
||||
"ai.text_rewritten": "AI: texte réécrit",
|
||||
"auth.cannot_delete_self": "Impossible de supprimer son propre compte",
|
||||
"auth.user_deleted": "Utilisateur supprimé",
|
||||
"backup.file_restored": "Fichier restauré avec succès",
|
||||
"backup.restore_failed": "Échec de la restauration",
|
||||
"backup.select_to_restore": "Sélectionnez un backup à restaurer",
|
||||
"backup.timestamp_not_found": "Impossible de trouver le timestamp du backup",
|
||||
"button.cancel": "Annuler",
|
||||
"config.api_keys_saved": "Clés API sauvegardées",
|
||||
"config.link_copied": "Lien copié !",
|
||||
"config.link_created": "Lien créé !",
|
||||
"config.no_keys": "Aucune clé à sauvegarder",
|
||||
"config.reindex_error": "Erreur de réindexation",
|
||||
"config.save_error": "Erreur de sauvegarde",
|
||||
"config.settings_saved": "✓ Paramètres sauvegardés",
|
||||
"config.share_revoked": "Partage révoqué",
|
||||
"config.url_required": "URL requise",
|
||||
"dashboard.conflict_resolved": "Conflit résolu",
|
||||
"dashboard.pin_error": "Erreur lors de l'épinglage",
|
||||
"dragdrop.cross_vault_unsupported": "Cross-vault moves are not supported",
|
||||
"dragdrop.move_failed": "Move failed",
|
||||
"error.initialization": "Erreur lors de l'initialisation",
|
||||
"offline.all_synced": "Toutes les modifications ont été synchronisées",
|
||||
"offline.mode_offline": "Mode hors-ligne — vos modifications seront synchronisées au retour",
|
||||
"offline.reconnected": "Connexion rétablie — synchronisation en cours...",
|
||||
"search.saved": "Recherche sauvegardée",
|
||||
"sync.index_reloaded": "Index complet rechargé",
|
||||
"sync.install_success": "ObsiGate installé avec succès !",
|
||||
"toast.dir_renamed": "Dossier renommé",
|
||||
"toast.file_deleted": "Fichier supprimé",
|
||||
"toast.file_renamed": "Fichier renommé",
|
||||
"ui.cannot_rename": "Impossible de renommer cet élément",
|
||||
"ui.element_not_found": "Élément introuvable dans l'arborescence",
|
||||
"viewer.copy_error": "Erreur lors de la copie",
|
||||
"viewer.loaded_from_cache": "Fichier chargé depuis le cache hors-ligne",
|
||||
"ai.not_configured": "⚠️ AI non configuré — ajouter DEEPSEEK_API_KEY, OPENROUTER_API_KEY ou GEMINI_API_KEY dans .env",
|
||||
"ai.inline_completion_title": "AI Inline Completion (Ctrl+J) — Complète le texte automatiquement",
|
||||
"ai.rewrite": "💬 Réécrire",
|
||||
"ai.rewrite_title": "Réécrit le texte selon vos instructions",
|
||||
"auth.logout_title": "Déconnexion",
|
||||
"config.reindexing": "Réindexation...",
|
||||
"config.force_reindex": "Forcer réindexation",
|
||||
"search.previous": "← Précédent",
|
||||
"viewer.copied": "Copié !",
|
||||
"viewer.shared_doc_title": "Document partagé — cliquer pour gérer"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user