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

@ -5,7 +5,7 @@
modal
:draggable="false"
:dismissableMask="true"
header="Titre du PDF"
:header="t('dialogs.pdfTitle')"
class="dialog"
:class="[
{ 'with-comments': isCommentsOpen },
@ -22,7 +22,7 @@
class="btn"
@click="validate()"
>
Valider et envoyer le brief
{{ t('buttons.validate') }}
</button>
<h2
v-if="openedFile"
@ -52,7 +52,9 @@ import { useRoute, useRouter } from 'vue-router';
import { storeToRefs } from 'pinia';
import { useApiStore } from '../../stores/api';
import { usePageStore } from '../../stores/page';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const { openedFile, isCommentsOpen } = storeToRefs(useDialogStore());
const router = useRouter();