File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import type { RemovableRef } from '@vueuse/core'
22import { useLocalStorage } from '@vueuse/core'
33import { ACCENT_COLORS } from '#shared/utils/constants'
4+ import type { LocaleObject } from '@nuxtjs/i18n'
45
56type AccentColorId = keyof typeof ACCENT_COLORS
67
@@ -16,6 +17,8 @@ export interface AppSettings {
1617 accentColorId : AccentColorId | null
1718 /** Hide platform-specific packages (e.g., @scope/pkg-linux-x64) from search results */
1819 hidePlatformPackages : boolean
20+ /** User-selected locale */
21+ selectedLocale : LocaleObject [ 'code' ] | null
1922 sidebar : {
2023 collapsed : string [ ]
2124 }
@@ -26,6 +29,7 @@ const DEFAULT_SETTINGS: AppSettings = {
2629 includeTypesInInstall : true ,
2730 accentColorId : null ,
2831 hidePlatformPackages : true ,
32+ selectedLocale : null ,
2933 sidebar : {
3034 collapsed : [ ] ,
3135 } ,
Original file line number Diff line number Diff line change 11<script setup lang="ts">
22const router = useRouter ()
33const { settings } = useSettings ()
4- const { locale, locales, setLocale } = useI18n ()
4+ const { locale, locales, setLocale : setNuxti18nLocale } = useI18n ()
55const colorMode = useColorMode ()
66const { currentLocaleStatus, isSourceLocale } = useI18nStatus ()
77
@@ -28,6 +28,11 @@ defineOgImageComponent('Default', {
2828 description : () => $t (' settings.tagline' ),
2929 primaryColor: ' #60a5fa' ,
3030})
31+
32+ const setLocale: typeof setNuxti18nLocale = locale => {
33+ settings .value .selectedLocale = locale
34+ return setNuxti18nLocale (locale )
35+ }
3136 </script >
3237
3338<template >
Original file line number Diff line number Diff line change 1+ export default defineNuxtPlugin ( {
2+ enforce : 'post' ,
3+ env : { islands : false } ,
4+ setup ( ) {
5+ const { $i18n } = useNuxtApp ( )
6+ const { locale, locales, setLocale } = $i18n
7+ const { settings } = useSettings ( )
8+ const settingsLocale = settings . value . selectedLocale
9+
10+ if (
11+ settingsLocale &&
12+ // Check if the value is a supported locale
13+ locales . value . map ( l => l . code ) . includes ( settingsLocale ) &&
14+ // Check if the value is not a current locale
15+ settingsLocale !== locale . value
16+ ) {
17+ setLocale ( settingsLocale )
18+ }
19+ } ,
20+ } )
You can’t perform that action at this time.
0 commit comments