Skip to content

Commit ae7197d

Browse files
fix(i18n): generate fallbacks for pages with filenames containing locale keys (#14690)
1 parent 1901061 commit ae7197d

15 files changed

Lines changed: 139 additions & 2 deletions

File tree

.changeset/ten-masks-attend.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'astro': patch
3+
---
4+
5+
Fixes a bug where Astro's i18n fallback system with `fallbackType: 'rewrite'` would not generate fallback files for pages whose filename started with a locale key.

packages/astro/src/core/routing/manifest/create.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ export async function createRoutesList(
565565
const setRoutes = new Set(routes.filter((route) => route.type === 'page'));
566566

567567
// First loop
568-
// We loop over the locales minus the default locale and add only the routes that contain `/<locale>`.
568+
// We loop over all locales except the default, adding routes that include the locale as a path segment.
569569
const filteredLocales = i18n.locales
570570
.filter((loc) => {
571571
if (typeof loc === 'string') {
@@ -581,7 +581,8 @@ export async function createRoutesList(
581581
});
582582
for (const locale of filteredLocales) {
583583
for (const route of setRoutes) {
584-
if (!route.route.includes(`/${locale}`)) {
584+
const hasLocaleInRoute = route.route.split('/').includes(locale);
585+
if (!hasLocaleInRoute) {
585586
continue;
586587
}
587588
const currentRoutes = routesByLocale.get(locale);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { defineConfig} from "astro/config";
2+
3+
export default defineConfig({
4+
i18n: {
5+
locales: ['en', 'de'],
6+
defaultLocale: 'en',
7+
routing: {
8+
fallbackType: 'rewrite',
9+
},
10+
fallback: {
11+
de: 'en',
12+
},
13+
},
14+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "@test/i18n-routing-fallback-rewrite-filename",
3+
"version": "0.0.0",
4+
"private": true,
5+
"dependencies": {
6+
"astro": "workspace:*"
7+
}
8+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
<span id="page">Denmark</span>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
<span id="page">Destination: Denmark</span>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
<span id="page">Destination: Index</span>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
<span id="page">Destination: Norway</span>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
<span id="page">Index</span>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
---
3+
<span id="page">Norway</span>

0 commit comments

Comments
 (0)