feat: ContentPage bilingue (PK composite slug+lang) + seed pages EN
Migration : ContentPage.id devient PK composite (slug, lang) au lieu de slug seul, pour stocker une version FR et une version EN du même slug. Index sur slug seul pour les lookups. Schema Prisma : @@id([slug, lang]). Helpers : - getContentPage(slug, lang) avec fallback FR si la version dans la langue demandée n'existe pas - listContentPages(category?, lang?) accepte un filtre lang - upsertContentPage : utilise le composite key Pages publiques (a-propos, faq, comment-ca-marche, pour-comites-entreprise, devenir-loueur, cgv, mentions-legales, politique-de-confidentialite) : ajoutent un appel à getLocale() et le passent à getContentPage. Seeds : - src/lib/plugins/seeds/content-pages-en.ts : 8 pages traduites en anglais - hook onEnable du plugin i18n-fr-en : seed EN pages au toggle on. Désactiver i18n n'efface pas les EN pages (elles dorment, fallback FR reprend). Résultat : quand l'utilisateur switche vers EN, /a-propos, /faq, /cgv, etc. basculent en anglais. Le contenu hors-DB (composants UI) bascule déjà via les dictionnaires de la PR i18n-fr-en initiale.
This commit is contained in:
parent
88a937f2fd
commit
87c3e7a581
13 changed files with 376 additions and 40 deletions
|
|
@ -29,6 +29,7 @@ import {
|
|||
deactivatePirogueProviders,
|
||||
seedPirogueProviders,
|
||||
} from "./seeds/pirogue-providers-default";
|
||||
import { seedEnglishContentPages } from "./seeds/content-pages-en";
|
||||
|
||||
export const pluginHooks: Record<string, PluginHookSet | undefined> = {
|
||||
"demo-carbets-seed": {
|
||||
|
|
@ -83,4 +84,13 @@ export const pluginHooks: Record<string, PluginHookSet | undefined> = {
|
|||
console.log(`[plugin pirogue-providers] disable: ${count} partenaires désactivés`);
|
||||
},
|
||||
},
|
||||
// Quand i18n est activé, on seed les pages content + legal en EN.
|
||||
// Désactiver n'efface pas les EN pages (elles dorment juste, fallback FR
|
||||
// reprend la main au prochain getContentPage).
|
||||
"i18n-fr-en": {
|
||||
onEnable: async () => {
|
||||
const count = await seedEnglishContentPages();
|
||||
console.log(`[plugin i18n-fr-en] seed: ${count} pages EN`);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue