summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiDeoo2024-07-10 18:06:13 +0200
committerGitHub2024-07-10 18:06:13 +0200
commit359a64219288795936f18fd50fb5f195c412a748 (patch)
tree391fe8ae74cd3398d3c5f0a7dbc4fb5197d6d1ba
parent4442b56fbd704383652871c5e5bd906a94f17b52 (diff)
downloadIT.starlight-359a64219288795936f18fd50fb5f195c412a748.tar.gz
IT.starlight-359a64219288795936f18fd50fb5f195c412a748.tar.bz2
IT.starlight-359a64219288795936f18fd50fb5f195c412a748.zip
Fix an Astro i18n → Starlight i18n config conversion issue (#2122)
-rw-r--r--.changeset/large-bananas-beg.md5
-rw-r--r--packages/starlight/__tests__/basics/i18n.test.ts4
-rw-r--r--packages/starlight/utils/i18n.ts11
3 files changed, 13 insertions, 7 deletions
diff --git a/.changeset/large-bananas-beg.md b/.changeset/large-bananas-beg.md
new file mode 100644
index 00000000..0e22d385
--- /dev/null
+++ b/.changeset/large-bananas-beg.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/starlight': patch
+---
+
+Fixes an i18n configuration issue for multilingual sites when using Astro’s `i18n` config with `prefixDefaultLocale` set to `false`.
diff --git a/packages/starlight/__tests__/basics/i18n.test.ts b/packages/starlight/__tests__/basics/i18n.test.ts
index 527783b9..32dd299a 100644
--- a/packages/starlight/__tests__/basics/i18n.test.ts
+++ b/packages/starlight/__tests__/basics/i18n.test.ts
@@ -162,7 +162,7 @@ describe('processI18nConfig', () => {
locales: ['en', { codes: ['fr'], path: 'french' }],
},
expected: {
- defaultLocale: { label: 'English', lang: 'en', dir: 'ltr', locale: 'en' },
+ defaultLocale: { label: 'English', lang: 'en', dir: 'ltr', locale: undefined },
locales: {
root: { label: 'English', lang: 'en', dir: 'ltr' },
french: { label: 'Français', lang: 'fr', dir: 'ltr' },
@@ -180,7 +180,7 @@ describe('processI18nConfig', () => {
routing: { prefixDefaultLocale: false },
},
expected: {
- defaultLocale: { label: 'فارسی', lang: 'fa', dir: 'rtl', locale: 'fa' },
+ defaultLocale: { label: 'فارسی', lang: 'fa', dir: 'rtl', locale: undefined },
locales: {
root: { label: 'فارسی', lang: 'fa', dir: 'rtl' },
de: { label: 'Deutsch', lang: 'de', dir: 'ltr' },
diff --git a/packages/starlight/utils/i18n.ts b/packages/starlight/utils/i18n.ts
index 8cba4f5a..ce07b1cc 100644
--- a/packages/starlight/utils/i18n.ts
+++ b/packages/starlight/utils/i18n.ts
@@ -118,11 +118,12 @@ function getStarlightI18nConfig(
locales,
defaultLocale: {
...inferStarlightLocaleFromAstroLocale(defaultAstroLocale),
- locale: isMonolingualWithRootLocale
- ? undefined
- : isAstroLocaleExtendedConfig(defaultAstroLocale)
- ? defaultAstroLocale.codes[0]
- : defaultAstroLocale,
+ locale:
+ isMonolingualWithRootLocale || (isMultilingual && !prefixDefaultLocale)
+ ? undefined
+ : isAstroLocaleExtendedConfig(defaultAstroLocale)
+ ? defaultAstroLocale.codes[0]
+ : defaultAstroLocale,
},
};
}