2026-03-12 18:38:03 +01:00
|
|
|
import { locale } from "@state/locale.svelte";
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
|
|
|
|
|
const dict = {
|
|
|
|
|
// Article
|
2026-03-12 18:38:03 +01:00
|
|
|
published_on: { fr: "Publié le", en: "Published on" },
|
|
|
|
|
link_copied: { fr: "Lien copié !", en: "Link copied!" },
|
|
|
|
|
copy_link: { fr: "Copier le lien", en: "Copy link" },
|
|
|
|
|
share_article: { fr: "Partager cet article", en: "Share this article" },
|
|
|
|
|
related: { fr: "Nos recommandations", en: "Our recommendations" },
|
|
|
|
|
share_whatsapp: { fr: "Partager sur WhatsApp", en: "Share on WhatsApp" },
|
|
|
|
|
share_x: { fr: "Partager sur X", en: "Share on X" },
|
|
|
|
|
share_facebook: { fr: "Partager sur Facebook", en: "Share on Facebook" },
|
|
|
|
|
share_linkedin: { fr: "Partager sur LinkedIn", en: "Share on LinkedIn" },
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
// Blog
|
2026-03-12 18:38:03 +01:00
|
|
|
loading: { fr: "Chargement…", en: "Loading…" },
|
|
|
|
|
read_article: { fr: "Lire l'article", en: "Read article" },
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
// Play
|
2026-03-12 18:38:03 +01:00
|
|
|
play: { fr: "Jouer", en: "Play" },
|
|
|
|
|
coming_soon: { fr: "Coming soon", en: "Coming soon" },
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
// Header
|
2026-03-12 18:38:03 +01:00
|
|
|
close_menu: { fr: "Fermer le menu", en: "Close menu" },
|
|
|
|
|
open_menu: { fr: "Ouvrir le menu", en: "Open menu" },
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
// Footer
|
2026-03-12 18:38:03 +01:00
|
|
|
location: { fr: "Adresse", en: "Location" },
|
|
|
|
|
contact: { fr: "Contactez-nous", en: "Contact" },
|
|
|
|
|
follow_us: { fr: "Suivez-nous", en: "Follow us" },
|
|
|
|
|
newsletter_heading: {
|
|
|
|
|
fr: "Inscrivez-vous à notre newsletter !",
|
|
|
|
|
en: "Subscribe to our newsletter!",
|
|
|
|
|
},
|
|
|
|
|
newsletter_placeholder: { fr: "Votre email", en: "Enter your email" },
|
|
|
|
|
newsletter_submit: { fr: "S'inscrire", en: "Subscribe" },
|
|
|
|
|
newsletter_success: {
|
|
|
|
|
fr: "Merci pour votre inscription !",
|
|
|
|
|
en: "Thank you for subscribing!",
|
|
|
|
|
},
|
|
|
|
|
newsletter_error: {
|
|
|
|
|
fr: "Une erreur est survenue.",
|
|
|
|
|
en: "An error occurred.",
|
|
|
|
|
},
|
|
|
|
|
copyright: {
|
|
|
|
|
fr: "World Game © {year}. Tous droits réservés.",
|
|
|
|
|
en: "World Game © {year}. All rights reserved.",
|
|
|
|
|
},
|
|
|
|
|
legal: { fr: "Mentions légales", en: "Legal notice" },
|
|
|
|
|
cookies: { fr: "Préférences cookies", en: "Cookie preferences" },
|
|
|
|
|
privacy: { fr: "Confidentialité", en: "Privacy" },
|
2026-03-17 10:00:53 +01:00
|
|
|
// About
|
|
|
|
|
our_team: { fr: "NOTRE ÉQUIPE", en: "OUR TEAM" },
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
// Menu
|
2026-03-12 18:38:03 +01:00
|
|
|
menu: { fr: "MENU", en: "MENU" },
|
|
|
|
|
connect: { fr: "CONNECT", en: "CONNECT" },
|
|
|
|
|
address: { fr: "ADRESSE", en: "LOCATION" },
|
|
|
|
|
mail: { fr: "MAIL", en: "MAIL" },
|
|
|
|
|
socials: { fr: "RÉSEAUX", en: "SOCIALS" },
|
|
|
|
|
};
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
|
|
|
|
|
export function t(key, vars = {}) {
|
2026-03-12 18:38:03 +01:00
|
|
|
const lang = locale.current;
|
|
|
|
|
let str = dict[key]?.[lang] ?? dict[key]?.fr ?? key;
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
for (const [k, v] of Object.entries(vars)) {
|
2026-03-12 18:38:03 +01:00
|
|
|
str = str.replace(`{${k}}`, v);
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
}
|
2026-03-12 18:38:03 +01:00
|
|
|
return str;
|
Feat: intégration multilingue FR/EN (i18n)
- Ajout de src/i18n/index.js : dictionnaire centralisé + fonction t(key, vars)
- Ajout de LanguageSwitcher.svelte : toggle FR/EN avec persistance localStorage
- Router : normalizePath strip /en/, apiPrefix() pour les fetches, détection langue (URL > localStorage > navigator)
- Tous les composants (Header, Menu, Footer, Article, Blog, Play) migrent vers t() depuis @i18n
- Blog : navigation interne (fetch, history, getSlugFromUrl) locale-aware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 11:57:59 +01:00
|
|
|
}
|