|
1 | 1 | <script setup lang="ts"> |
2 | 2 | const router = useRouter() |
3 | 3 | const { settings } = useSettings() |
4 | | -const { locale: currentLocale, locales, setLocale: setNuxti18nLocale } = useI18n() |
| 4 | +const { locale, locales, setLocale: setNuxti18nLocale } = useI18n() |
5 | 5 | const colorMode = useColorMode() |
6 | 6 | const { currentLocaleStatus, isSourceLocale } = useI18nStatus() |
7 | 7 | const keyboardShortcutsEnabled = useKeyboardShortcuts() |
8 | 8 | const { toggleCodeLigatures } = useCodeLigatures() |
9 | 9 |
|
| 10 | +// Create a computed property to handle locale binding properly |
| 11 | +const currentLocale = computed<string>({ |
| 12 | + get: () => locale.value as string, |
| 13 | + set: (newLocale: string) => { |
| 14 | + if (newLocale) { |
| 15 | + settings.value.selectedLocale = newLocale as any |
| 16 | + setNuxti18nLocale(newLocale as any) |
| 17 | + } |
| 18 | + }, |
| 19 | +}) |
| 20 | +
|
10 | 21 | // Escape to go back (but not when focused on form elements or modal is open) |
11 | 22 | onKeyStroke( |
12 | 23 | e => |
@@ -35,16 +46,6 @@ defineOgImageComponent('Default', { |
35 | 46 | description: () => $t('settings.tagline'), |
36 | 47 | primaryColor: '#60a5fa', |
37 | 48 | }) |
38 | | -
|
39 | | -const setLocale: typeof setNuxti18nLocale = newLocale => { |
40 | | - settings.value.selectedLocale = newLocale |
41 | | - return setNuxti18nLocale(newLocale) |
42 | | -} |
43 | | -
|
44 | | -function handleLocaleChange(newLocale?: string) { |
45 | | - if (!newLocale) return |
46 | | - setLocale(newLocale) |
47 | | -} |
48 | 49 | </script> |
49 | 50 |
|
50 | 51 | <template> |
@@ -249,8 +250,7 @@ function handleLocaleChange(newLocale?: string) { |
249 | 250 | <SelectField |
250 | 251 | id="language-select" |
251 | 252 | :items="locales.map(loc => ({ label: loc.name ?? '', value: loc.code }))" |
252 | | - :modelValue="currentLocale" |
253 | | - @update:modelValue="handleLocaleChange" |
| 253 | + v-model="currentLocale" |
254 | 254 | block |
255 | 255 | size="sm" |
256 | 256 | class="max-w-48" |
|
0 commit comments