Skip to content

Commit 69f19bd

Browse files
committed
Improve locale types docs
1 parent 2ace552 commit 69f19bd

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

README.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ import { localeFrom, browser } from '@nanostores/i18n'
132132

133133
export 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
144144
import { 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

148151
export 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:
157160
import { computed } from 'nanostores'
158161
import { 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

162172
export const locale = localeFrom(
163173
urlLocale,
164-
browser({ available: ['en', 'fr', 'ru'] })
174+
browser({ available: LOCALES })
165175
)
166176
```
167177

0 commit comments

Comments
 (0)