From f88b0184eab610c9f74a63c49d1a0ee65a33ae05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Sun, 5 Jul 2026 22:33:09 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20s=C3=A9lectionner=20la=20traduction=20p?= =?UTF-8?q?ar=20d=C3=A9faut=20selon=20la=20langue=20du=20navigateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/teks/teks.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/components/teks/teks.js b/components/teks/teks.js index 681e177..635bfac 100644 --- a/components/teks/teks.js +++ b/components/teks/teks.js @@ -106,7 +106,12 @@ const langToArray = parole => { return TRAD_FIELDS .filter(({field}) => parole.traductions[field]) - .map(({field, title}) => ({title, lang: parole.traductions[field]})) + .map(({field, title}) => ({field, title, lang: parole.traductions[field]})) +} + +const BROWSER_LANG_TO_FIELD = { + ja: 'japonais', ko: 'coreen', en: 'anglais', fr: 'francais', + es: 'espagnol', de: 'allemand', it: 'italien', pt: 'portugais', } const ExplicitTooltip = Tooltip @@ -134,6 +139,20 @@ export default function Teks({parole}) { return () => setCurrentTrack(null) }, [parole, setCurrentTrack]) + useEffect(() => { + const browserLang = navigator.language?.split('-')[0]?.toLowerCase() + if (!browserLang || browserLang === parole.langueSource) { + return + } + + const champ = BROWSER_LANG_TO_FIELD[browserLang] + const index = langArray.findIndex(lang => lang.field === champ) + if (index !== -1) { + setTab(index + 1) + } + // eslint-disable-next-line react-hooks/exhaustive-deps -- ne doit s'exécuter qu'au montage, pas à chaque changement d'onglet + }, []) + return (