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

@ -3,7 +3,7 @@
v-if="images.length > 0"
:step="step"
:images="images"
:uri="'/' + step.uri"
:uri="addLocalePrefix(step.uri)"
/>
<Document v-if="pdf" :step="step" :pdf="pdf" />
@ -12,11 +12,11 @@
class="btn | w-full"
@click="goToImagesBrief()"
>
Ajouter un brief via la plateforme
{{ t('brief.addPlatform') }}
</button>
<div class="btn | w-full" v-if="!pdf && step.id === 'clientBrief'">
<label for="upload-pdf">
Ajouter un brief PDF
{{ t('brief.addPdf') }}
<input
id="upload-pdf"
type="file"
@ -35,10 +35,13 @@ import Images from "./Images.vue";
import Document from "./Document.vue";
import { useBriefStore } from "../../../stores/brief";
import { useRouter } from "vue-router";
import { useI18n } from "vue-i18n";
import { addLocalePrefix } from "../../../utils/router";
const { step } = defineProps({ step: Object });
const { addPdf } = useBriefStore();
const router = useRouter();
const { t } = useI18n();
const images = computed(() => {
return step.files.filter((file) => file.type === "image");