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 : {
2026-03-18 16:17:16 +01:00
fr : "Abonnez-vous à nos newsletters !" ,
en : "Subscribe to our newsletters!" ,
2026-03-12 18:38:03 +01:00
} ,
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" } ,
2026-03-18 17:37:22 +01:00
// White Papers
white _paper _label : { fr : "LIVRE BLANC" , en : "WHITE PAPER" } ,
read _wp : { fr : "Télécharger" , en : "Download" } ,
wp _form _intro : { fr : "Renseignez vos informations pour télécharger notre livre blanc." , en : "Fill in your information to download our white paper." } ,
wp _firstname : { fr : "Prénom*" , en : "First name*" } ,
wp _lastname : { fr : "Nom*" , en : "Last name*" } ,
wp _company : { fr : "Société*" , en : "Company*" } ,
wp _role : { fr : "Fonction*" , en : "Role*" } ,
wp _email : { fr : "E-mail*" , en : "E-mail*" } ,
wp _consent : { fr : "En cochant cette case, j'accepte d'être recontacté par la société World Game. Mes données ne seront ni vendues, ni partagées." , en : "By checking this box, I agree to be contacted by World Game. My data will not be sold or shared." } ,
wp _download : { fr : "TÉLÉCHARGEMENT" , en : "DOWNLOAD" } ,
wp _success : { fr : "Votre demande a été enregistrée. Le téléchargement devrait démarrer." , en : "Your request has been registered. The download should start." } ,
wp _error : { fr : "Une erreur est survenue, veuillez réessayer." , en : "An error occurred, please try again." } ,
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
}