@@ -132,7 +132,7 @@ import { localeFrom, browser } from '@nanostores/i18n'
132132
133133export const locale = localeFrom (
134134 …,
135- browser ({ available: [' en' , ' fr' , ' ru' ] })
135+ browser ({ available: [' en' , ' fr' , ' ru' ] as const })
136136)
137137` ` `
138138
@@ -143,11 +143,14 @@ in `localStorage`.
143143` ` ` ts
144144import { persistentAtom } from ' @nanostores/persistent'
145145
146- export const localeSettings = persistentAtom <string >(' locale' )
146+ const LOCALES = [' en' , ' fr' , ' ru' ] as const
147+ type Locale = (typeof LOCALES )[number]
148+
149+ export const localeSettings = persistentAtom< Locale> (' locale' , ' en' )
147150
148151export const locale = localeFrom (
149152 localeSettings,
150- browser ({ available: [ ' en ' , ' fr ' , ' ru ' ] })
153+ browser ({ available: LOCALES })
151154)
152155` ` `
153156
@@ -157,11 +160,18 @@ Or you can take user’s locale from URL router:
157160import { computed } from ' nanostores'
158161import { router } from ' ./router.js'
159162
160- const urlLocale = computed (router , page => page ?.params .locale )
163+ const LOCALES = [' en' , ' fr' , ' ru' ] as const
164+ type Locale = (typeof LOCALES )[number]
165+
166+ function validate (locale : string ): Locale {
167+ return LOCALES .includes (locale) ? locale : ' en'
168+ }
169+
170+ const urlLocale = computed (router, page => validate (page? .params .locale ))
161171
162172export const locale = localeFrom (
163173 urlLocale,
164- browser ({ available: [ ' en ' , ' fr ' , ' ru ' ] })
174+ browser ({ available: LOCALES })
165175)
166176` ` `
167177
0 commit comments