Skip to content

Commit 58733db

Browse files
committed
Fix default language Next.js
1 parent 5cfc1f4 commit 58733db

File tree

4 files changed

+17
-19
lines changed

4 files changed

+17
-19
lines changed

src/lib/i18n.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import React, { createContext, useContext, useMemo } from "react";
22
import type { ReactNode } from "react";
33
import { isBrowser } from "./tools/isBrowser";
44

5-
let defaultLang: undefined | string;
5+
let langIfNoProvider: undefined | string;
66

7-
export function setDefaultLang(lang: string) {
8-
defaultLang = lang;
7+
export function setLangToUseIfProviderNotUsed(lang: string) {
8+
langIfNoProvider = lang;
99
}
1010

1111
const langContext = createContext<string | undefined>(undefined);
@@ -14,7 +14,7 @@ function useLang(): string | undefined {
1414
const lang = useContext(langContext);
1515

1616
if (lang === undefined) {
17-
return defaultLang ?? (!isBrowser ? undefined : navigator.language);
17+
return langIfNoProvider ?? (!isBrowser ? undefined : navigator.language);
1818
}
1919

2020
return lang;

src/lib/start.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@ import type { ColorScheme } from "./darkMode";
33
import { startObservingColorSchemeHtmlAttribute, data_fr_theme, data_fr_scheme } from "./darkMode";
44
import { assert } from "tsafe/assert";
55
import { symToStr } from "tsafe/symToStr";
6-
import { setDefaultLang } from "./i18n";
6+
import { setLangToUseIfProviderNotUsed } from "./i18n";
77

88
export type Params = {
99
defaultColorScheme: ColorScheme | "system";
10-
/** If undefined it will fall back to browser preference */
11-
defaultLang?: string;
10+
/** If not specified it will fall back to browser preference */
11+
langIfNoProvider?: string;
1212
/** Default: false */
1313
verbose?: boolean;
1414
};
1515

1616
let isStarted = false;
1717

1818
export async function startDsfrReact(params: Params) {
19-
const { defaultColorScheme, verbose = false, defaultLang } = params;
19+
const { defaultColorScheme, verbose = false, langIfNoProvider } = params;
2020

2121
assert(
2222
isBrowser,
@@ -32,8 +32,8 @@ export async function startDsfrReact(params: Params) {
3232

3333
isStarted = true;
3434

35-
if (defaultLang !== undefined) {
36-
setDefaultLang(defaultLang);
35+
if (langIfNoProvider !== undefined) {
36+
setLangToUseIfProviderNotUsed(langIfNoProvider);
3737
}
3838

3939
const isNextJsDevEnvironnement = (window as any).__NEXT_DATA__?.buildId === "development";

src/next.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import DefaultDocument from "next/document";
3333
import { getAssetUrl } from "./lib/tools/getAssetUrl";
3434
import "./dsfr/dsfr.css";
3535
import "./dsfr/utility/icons/icons.css";
36-
import { setDefaultLang } from "./lib/i18n";
36+
import { setLangToUseIfProviderNotUsed } from "./lib/i18n";
3737

3838
const fontUrlByFileBasename = {
3939
"Marianne-Light": marianneLightWoff2Url,
@@ -119,6 +119,7 @@ export function createNextDsfrIntegrationApi(params: Params): NextDsfrIntegratio
119119
const {
120120
preloadFonts = [],
121121
doPersistDarkModePreferenceWithCookie = false,
122+
langIfNoProvider = "fr",
122123
...startDsfrReactParams
123124
} = params;
124125

@@ -130,12 +131,10 @@ export function createNextDsfrIntegrationApi(params: Params): NextDsfrIntegratio
130131
startDsfrReact(startDsfrReactParams);
131132
} else {
132133
defaultColorScheme = startDsfrReactParams.defaultColorScheme;
134+
}
133135

134-
const { defaultLang } = startDsfrReactParams;
135-
136-
if (defaultLang !== undefined) {
137-
setDefaultLang(defaultLang);
138-
}
136+
if (langIfNoProvider !== undefined) {
137+
setLangToUseIfProviderNotUsed(langIfNoProvider);
139138
}
140139

141140
const colorSchemeKey = "dsfrColorScheme";

test/integration/next/pages/_app.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import type { AppProps } from "next/app";
2-
import { DsfrLangProvider } from "@codegouvfr/react-dsfr";
32
import { createNextDsfrIntegrationApi } from "@codegouvfr/react-dsfr/next";
43
import { Header } from "@codegouvfr/react-dsfr/Header";
54
import { createEmotionSsrAdvancedApproach } from "tss-react/next";
@@ -38,7 +37,7 @@ function App({ Component, pageProps }: AppProps) {
3837
const { css } = useStyles();
3938

4039
return (
41-
<DsfrLangProvider lang="fr">
40+
<>
4241
<Header
4342
intituléOfficiel="Intitulé officiel"
4443
baselinePrécisionsSurLorganisation="baseline - Précision sur l'organisation"
@@ -70,7 +69,7 @@ function App({ Component, pageProps }: AppProps) {
7069
})}>
7170
<Component {...pageProps} />
7271
</div>
73-
</DsfrLangProvider>
72+
</>
7473
);
7574
}
7675

0 commit comments

Comments
 (0)