- 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>
44 lines
1.1 KiB
PHP
44 lines
1.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Route catch-all pour le préfixe /en/
|
|
* Permet d'accéder aux pages avec /en/... pour la version anglaise
|
|
*/
|
|
|
|
return [
|
|
'pattern' => 'en/(:all?)',
|
|
'action' => function ($uri = '') {
|
|
// Si l'URI se termine par .json, chercher la page et retourner le JSON
|
|
if (str_ends_with($uri, '.json')) {
|
|
$uri = str_replace('.json', '', $uri);
|
|
$page = page($uri);
|
|
|
|
if (!$page) {
|
|
// Si pas de page trouvée, essayer avec 'home'
|
|
if ($uri === '' || $uri === '/') {
|
|
$page = page('home');
|
|
} else {
|
|
return false; // 404
|
|
}
|
|
}
|
|
|
|
// Retourner la page pour que Kirby serve le template .json.php
|
|
return $page;
|
|
}
|
|
|
|
// Pour les URLs normales (sans .json), chercher la page
|
|
$page = page($uri);
|
|
|
|
if (!$page) {
|
|
// Si pas de page trouvée, essayer avec 'home'
|
|
if ($uri === '' || $uri === '/') {
|
|
$page = page('home');
|
|
} else {
|
|
return false; // 404
|
|
}
|
|
}
|
|
|
|
// Retourner la page pour que Kirby serve le template .php
|
|
return $page;
|
|
}
|
|
];
|