1
1
import type { SSRManifest } from '../core/app/types.js' ;
2
2
import type { AstroConfig , Locales } from '../types/public/config.js' ;
3
- import { normalizeTheLocale , toCodes } from './index.js' ;
3
+ import { normalizeTheLocale , getAllCodes } from './index.js' ;
4
4
5
5
type BrowserLocale = {
6
6
locale : string ;
@@ -62,7 +62,7 @@ export function parseLocale(header: string): BrowserLocale[] {
62
62
}
63
63
64
64
function sortAndFilterLocales ( browserLocaleList : BrowserLocale [ ] , locales : Locales ) {
65
- const normalizedLocales = toCodes ( locales ) . map ( normalizeTheLocale ) ;
65
+ const normalizedLocales = getAllCodes ( locales ) . map ( normalizeTheLocale ) ;
66
66
return browserLocaleList
67
67
. filter ( ( browserLocale ) => {
68
68
if ( browserLocale . locale !== '*' ) {
@@ -96,11 +96,13 @@ export function computePreferredLocale(request: Request, locales: Locales): stri
96
96
if ( typeof currentLocale === 'string' ) {
97
97
if ( normalizeTheLocale ( currentLocale ) === normalizeTheLocale ( firstResult . locale ) ) {
98
98
result = currentLocale ;
99
+ break ;
99
100
}
100
101
} else {
101
102
for ( const currentCode of currentLocale . codes ) {
102
103
if ( normalizeTheLocale ( currentCode ) === normalizeTheLocale ( firstResult . locale ) ) {
103
- result = currentLocale . path ;
104
+ result = currentCode ;
105
+ break ;
104
106
}
105
107
}
106
108
}
@@ -119,14 +121,7 @@ export function computePreferredLocaleList(request: Request, locales: Locales):
119
121
120
122
// SAFETY: bang operator is safe because checked by the previous condition
121
123
if ( browserLocaleList . length === 1 && browserLocaleList . at ( 0 ) ! . locale === '*' ) {
122
- return locales . map ( ( locale ) => {
123
- if ( typeof locale === 'string' ) {
124
- return locale ;
125
- } else {
126
- // SAFETY: codes is never empty
127
- return locale . codes . at ( 0 ) ! ;
128
- }
129
- } ) ;
124
+ return getAllCodes ( locales ) ;
130
125
} else if ( browserLocaleList . length > 0 ) {
131
126
for ( const browserLocale of browserLocaleList ) {
132
127
for ( const loopLocale of locales ) {
@@ -137,7 +132,7 @@ export function computePreferredLocaleList(request: Request, locales: Locales):
137
132
} else {
138
133
for ( const code of loopLocale . codes ) {
139
134
if ( code === browserLocale . locale ) {
140
- result . push ( loopLocale . path ) ;
135
+ result . push ( code ) ;
141
136
}
142
137
}
143
138
}
0 commit comments