diff --git a/src/renderer/components/ModalSettings.vue b/src/renderer/components/ModalSettings.vue index 62fd7c0e..99cfd0f2 100644 --- a/src/renderer/components/ModalSettings.vue +++ b/src/renderer/components/ModalSettings.vue @@ -329,7 +329,7 @@ import ModalSettingsChangelog from '@/components/ModalSettingsChangelog.vue'; import BaseTextEditor from '@/components/BaseTextEditor.vue'; import BaseSelect from '@/components/BaseSelect.vue'; -const { t, availableLocales } = useI18n(); +const { t, AvailableLocale } = useI18n(); const applicationStore = useApplicationStore(); const settingsStore = useSettingsStore(); @@ -456,7 +456,7 @@ const selectedTab: Ref = ref('general'); const locales = computed(() => { const locales = []; - for (const locale of availableLocales) + for (const locale of AvailableLocale) locales.push({ code: locale, name: localesNames[locale] }); return locales; diff --git a/src/renderer/i18n/index.ts b/src/renderer/i18n/index.ts index e84e87dc..72d42d03 100644 --- a/src/renderer/i18n/index.ts +++ b/src/renderer/i18n/index.ts @@ -29,10 +29,10 @@ type NestedPartial = { [K in keyof T]?: T[K] extends Array ? Array> : (T[K] extends unknown ? unknown : NestedPartial) }; -type MessageSchema = typeof enUS -type AvailableLocales = keyof typeof messages +export type MessageSchema = typeof enUS +export type AvailableLocale = keyof typeof messages -const i18n = createI18n<[NestedPartial], AvailableLocales>({ +const i18n = createI18n<[NestedPartial], AvailableLocale>({ fallbackLocale: 'en-US', legacy: false, messages diff --git a/src/renderer/stores/settings.ts b/src/renderer/stores/settings.ts index 6b1b87c4..af8f58ea 100644 --- a/src/renderer/stores/settings.ts +++ b/src/renderer/stores/settings.ts @@ -1,6 +1,6 @@ import { defineStore } from 'pinia'; import { ipcRenderer } from 'electron'; -import i18n from '@/i18n'; +import i18n, { AvailableLocale } from '@/i18n'; import * as Store from 'electron-store'; const persistentStore = new Store({ name: 'settings' }); const isDarkTheme = window.matchMedia('(prefers-color-scheme: dark)'); @@ -12,7 +12,7 @@ export type ApplicationTheme = 'light' | 'dark'; export const useSettingsStore = defineStore('settings', { state: () => ({ - locale: persistentStore.get('locale', 'en-US') as string, + locale: persistentStore.get('locale', 'en-US') as AvailableLocale, allowPrerelease: persistentStore.get('allow_prerelease', true) as boolean, explorebarSize: persistentStore.get('explorebar_size', null) as number, notificationsTimeout: persistentStore.get('notifications_timeout', 5) as number, @@ -27,7 +27,7 @@ export const useSettingsStore = defineStore('settings', { disableScratchpad: persistentStore.get('disable_scratchpad', false) as boolean }), actions: { - changeLocale (locale: string) { + changeLocale (locale: AvailableLocale) { this.locale = locale; i18n.global.locale = locale; persistentStore.set('locale', this.locale);