@@ -22,21 +22,22 @@ import type {
22
22
AutoI18nConfig ,
23
23
ModuleRuntimeConfig ,
24
24
MultiSitemapEntry ,
25
- NormalisedLocales ,
26
25
SitemapDefinition ,
27
26
SitemapSourceBase ,
28
27
SitemapSourceInput ,
29
28
SitemapSourceResolved ,
30
29
ModuleOptions as _ModuleOptions , FilterInput ,
31
- NormalisedLocale ,
32
30
} from './runtime/types'
33
31
import { convertNuxtPagesToSitemapEntries , generateExtraRoutesFromNuxtConfig , resolveUrls } from './util/nuxtSitemap'
34
32
import { createNitroPromise , createPagesPromise , extendTypes , getNuxtModuleOptions , resolveNitroPreset } from './util/kit'
35
33
import { includesSitemapRoot , isNuxtGenerate , setupPrerenderHandler } from './prerender'
36
- import { mergeOnKey } from './runtime/utils-pure'
37
34
import { setupDevToolsUI } from './devtools'
38
35
import { normaliseDate } from './runtime/nitro/sitemap/urlset/normalise'
39
- import { generatePathForI18nPages , getOnlyLocalesFromI18nConfig , splitPathForI18nLocales } from './util/i18n'
36
+ import {
37
+ generatePathForI18nPages ,
38
+ normalizeLocales ,
39
+ splitPathForI18nLocales ,
40
+ } from './util/i18n'
40
41
import { normalizeFilters } from './util/filter'
41
42
42
43
// eslint-disable-next-line
@@ -155,18 +156,14 @@ export default defineNuxtModule<ModuleOptions>({
155
156
let nuxtI18nConfig = { } as NuxtI18nOptions
156
157
let resolvedAutoI18n : false | AutoI18nConfig = typeof config . autoI18n === 'boolean' ? false : config . autoI18n || false
157
158
const hasDisabledAutoI18n = typeof config . autoI18n === 'boolean' && ! config . autoI18n
158
- let normalisedLocales : NormalisedLocales = [ ]
159
+ let normalisedLocales : AutoI18nConfig [ 'locales' ] = [ ]
159
160
let usingI18nPages = false
160
161
if ( hasNuxtModule ( '@nuxtjs/i18n' ) ) {
161
162
const i18nVersion = await getNuxtModuleVersion ( '@nuxtjs/i18n' )
162
163
if ( ! await hasNuxtModuleCompatibility ( '@nuxtjs/i18n' , '>=8' ) )
163
164
logger . warn ( `You are using @nuxtjs/i18n v${ i18nVersion } . For the best compatibility, please upgrade to @nuxtjs/i18n v8.0.0 or higher.` )
164
165
nuxtI18nConfig = ( await getNuxtModuleOptions ( '@nuxtjs/i18n' ) || { } ) as NuxtI18nOptions
165
- normalisedLocales = mergeOnKey ( ( nuxtI18nConfig . locales || [ ] ) . map ( ( locale : any ) => typeof locale === 'string' ? { code : locale } : locale ) , 'code' )
166
- const onlyLocales = getOnlyLocalesFromI18nConfig ( nuxtI18nConfig )
167
- if ( onlyLocales . length ) {
168
- normalisedLocales = normalisedLocales . filter ( ( locale : NormalisedLocale ) => onlyLocales . includes ( locale . code ) )
169
- }
166
+ normalisedLocales = normalizeLocales ( nuxtI18nConfig )
170
167
usingI18nPages = ! ! Object . keys ( nuxtI18nConfig . pages || { } ) . length
171
168
if ( usingI18nPages && ! hasDisabledAutoI18n ) {
172
169
const i18nPagesSources : SitemapSourceBase = {
@@ -189,20 +186,20 @@ export default defineNuxtModule<ModuleOptions>({
189
186
// add to sitemap
190
187
const alternatives = Object . keys ( pageLocales )
191
188
. map ( l => ( {
192
- hreflang : normalisedLocales . find ( nl => nl . code === l ) ?. iso || l ,
189
+ hreflang : normalisedLocales . find ( nl => nl . code === l ) ?. _hreflang || l ,
193
190
href : generatePathForI18nPages ( { localeCode : l , pageLocales : pageLocales [ l ] , nuxtI18nConfig, normalisedLocales } ) ,
194
191
} ) )
195
192
if ( alternatives . length && nuxtI18nConfig . defaultLocale && pageLocales [ nuxtI18nConfig . defaultLocale ] )
196
193
alternatives . push ( { hreflang : 'x-default' , href : generatePathForI18nPages ( { normalisedLocales, localeCode : nuxtI18nConfig . defaultLocale , pageLocales : pageLocales [ nuxtI18nConfig . defaultLocale ] , nuxtI18nConfig } ) } )
197
194
i18nPagesSources . urls ! . push ( {
198
- _sitemap : locale . iso || locale . code ,
195
+ _sitemap : locale . _sitemap ,
199
196
loc : generatePathForI18nPages ( { normalisedLocales, localeCode, pageLocales : pageLocales [ localeCode ] , nuxtI18nConfig } ) ,
200
197
alternatives,
201
198
} )
202
199
// add extra loc with the default locale code prefix on prefix and default strategy
203
200
if ( nuxtI18nConfig . strategy === 'prefix_and_default' && localeCode === nuxtI18nConfig . defaultLocale ) {
204
201
i18nPagesSources . urls ! . push ( {
205
- _sitemap : locale . iso || locale . code ,
202
+ _sitemap : locale . _sitemap ,
206
203
loc : generatePathForI18nPages ( { normalisedLocales, localeCode, pageLocales : pageLocales [ localeCode ] , nuxtI18nConfig, forcedStrategy : 'prefix' } ) ,
207
204
alternatives,
208
205
} )
@@ -240,7 +237,7 @@ export default defineNuxtModule<ModuleOptions>({
240
237
config . sitemaps = { index : [ ...( config . sitemaps ?. index || [ ] ) , ...( config . appendSitemaps || [ ] ) ] }
241
238
for ( const locale of resolvedAutoI18n . locales )
242
239
// @ts -expect-error untyped
243
- config . sitemaps [ locale . iso || locale . code ] = { includeAppSources : true }
240
+ config . sitemaps [ locale . _sitemap ] = { includeAppSources : true }
244
241
isI18nMapped = true
245
242
usingMultiSitemaps = true
246
243
}
@@ -603,7 +600,7 @@ declare module 'vue-router' {
603
600
if ( ! pageSource . length ) {
604
601
pageSource . push ( nuxt . options . app . baseURL || '/' )
605
602
}
606
- if ( ! resolvedConfigUrls ) {
603
+ if ( ! resolvedConfigUrls && config . urls ) {
607
604
config . urls && userGlobalSources . push ( {
608
605
context : {
609
606
name : 'sitemap:urls' ,
0 commit comments