Implémentation complète du multilingue FR/EN

- Installation vue-i18n v11 et création des fichiers de traduction (fr.json, en.json)
- Création store locale avec détection hiérarchique (URL > localStorage > navigator)
- Modification des routes avec préfixe /:locale? optionnel
- Toggle FR/EN dans Menu.vue avec synchronisation immédiate
- Traduction de ~200 textes dans 27 composants Vue
- Suppression des labels hardcodés en français côté backend
- Ajout route Kirby catch-all en/(:all?) pour /en/ URLs
- Helper addLocalePrefix() pour préserver locale dans liens dialogs
- Traduction pseudo-élément CSS via data attribute

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-02-02 18:21:11 +01:00
parent 3af95b1d20
commit 82eb8d88cc
49 changed files with 1079 additions and 295 deletions

View file

@ -10,12 +10,12 @@
<strong
class="notification__type | font-medium text-primary"
data-icon="document"
>Demande de création de projet</strong
>{{ t('notifications.projectRequest') }}</strong
>
<span class="notification__client | text-grey-700"
>{{ notification.project.title }}
{{
notification.project.status === "draft" ? "(brouillon)" : ""
notification.project.status === "draft" ? t('notifications.draft') : ""
}}</span
>
<time
@ -29,7 +29,7 @@
v-if="notification.type"
class="notification__body | text-md font-medium | line-clamp"
v-html="
'De la part de ' +
t('notifications.from') + ' ' +
(notification.author.name
? notification.author.name + ' (' + notification.author.email + ')'
: notification.author.email) +
@ -44,6 +44,9 @@
import { useNotificationsStore } from "../../stores/notifications";
import { useUserStore } from "../../stores/user";
import { useApiStore } from "../../stores/api";
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const { notification } = defineProps({ notification: Object });
const { formatDate } = useNotificationsStore();