feat: Add multi-language support (i18n)

Languages supported (8):
- English (en)
- 日本語 (ja)
- Deutsch (de)
- Français (fr)
- Español (es)
- 简体中文 (zh-CN)
- 繁體中文 (zh-TW)
- 한국어 (ko)

Changes:
- Add locale column to users table
- Add SetLocale middleware for automatic locale detection
- Add LocaleController for language switching
- Create language files with translations for all UI elements
- Add language selector to user profile page
- Update all Blade views to use translation strings
This commit is contained in:
2025-11-29 12:00:09 +09:00
parent ecfa21d56c
commit cdf0bf4bad
25 changed files with 1183 additions and 84 deletions
+117
View File
@@ -0,0 +1,117 @@
<?php
return [
// Navigation
'nav' => [
'dashboard' => 'Tableau de bord',
'knowledge_base' => 'Base de connaissances',
'profile' => 'Profil',
'user_management' => 'Gestion des utilisateurs',
'logout' => 'Déconnexion',
'login' => 'Connexion',
'register' => "S'inscrire",
],
// Documents
'documents' => [
'title' => 'Documents',
'new_document' => 'Nouveau document',
'edit_document' => 'Modifier le document',
'edit' => 'Modifier',
'delete' => 'Supprimer',
'save' => 'Enregistrer',
'cancel' => 'Annuler',
'created_by' => 'Créé par',
'updated' => 'Mis à jour',
'path' => 'Chemin',
'last_modified' => 'Dernière modification',
'no_documents' => 'Aucun document trouvé',
'search_placeholder' => 'Rechercher des documents...',
'create_success' => 'Document créé avec succès !',
'update_success' => 'Document mis à jour avec succès !',
'delete_success' => 'Document supprimé avec succès !',
'delete_confirm' => 'Êtes-vous sûr de vouloir supprimer ce document ?',
'linked_references' => 'Références liées',
'title_label' => 'Titre',
'title_placeholder' => 'Titre du document (ex: Laravel/Livewire/Components)',
'title_hint' => 'Astuce: Utilisez des barres obliques (/) dans le titre pour organiser automatiquement les documents en dossiers',
'content_label' => 'Contenu',
'content_placeholder' => 'Écrivez votre markdown ici...',
'saving' => 'Enregistrement...',
],
// Quick Switcher
'quick_switcher' => [
'title' => 'Changement rapide',
'placeholder' => 'Rechercher des documents...',
'no_results' => 'Aucun document trouvé',
'navigate' => 'pour naviguer',
'select' => 'pour sélectionner',
'close' => 'pour fermer',
],
// Admin
'admin' => [
'user_management' => 'Gestion des utilisateurs',
'new_user' => 'Nouvel utilisateur',
'edit_user' => "Modifier l'utilisateur",
'create_user' => 'Créer un utilisateur',
'users' => 'Utilisateurs',
'name' => 'Nom',
'email' => 'E-mail',
'password' => 'Mot de passe',
'password_confirmation' => 'Confirmer le mot de passe',
'password_hint' => 'Laissez vide pour conserver le mot de passe actuel.',
'role' => 'Rôle',
'admin' => 'Administrateur',
'user' => 'Utilisateur',
'grant_admin' => "Accorder les privilèges d'administrateur",
'created_at' => 'Créé le',
'actions' => 'Actions',
'edit' => 'Modifier',
'delete' => 'Supprimer',
'no_users' => 'Aucun utilisateur trouvé.',
'create_success' => 'Utilisateur créé avec succès.',
'update_success' => 'Utilisateur mis à jour avec succès.',
'delete_success' => 'Utilisateur supprimé avec succès.',
'cannot_delete_self' => 'Vous ne pouvez pas vous supprimer vous-même.',
'self_admin_warning' => "Supprimer vos propres privilèges d'administrateur vous empêchera d'accéder au panneau d'administration.",
],
// Settings
'settings' => [
'language' => 'Langue',
'select_language' => 'Sélectionner la langue',
'language_updated' => 'Langue mise à jour avec succès.',
],
// Common
'common' => [
'save' => 'Enregistrer',
'cancel' => 'Annuler',
'delete' => 'Supprimer',
'edit' => 'Modifier',
'create' => 'Créer',
'update' => 'Mettre à jour',
'back' => 'Retour',
'confirm' => 'Confirmer',
'yes' => 'Oui',
'no' => 'Non',
'loading' => 'Chargement...',
'error' => 'Erreur',
'success' => 'Succès',
],
// Auth
'auth' => [
'login' => 'Connexion',
'register' => "S'inscrire",
'email' => 'E-mail',
'password' => 'Mot de passe',
'remember_me' => 'Se souvenir de moi',
'forgot_password' => 'Mot de passe oublié ?',
'confirm_password' => 'Confirmer le mot de passe',
'already_registered' => 'Déjà inscrit ?',
],
];