From 9d657395ffc51f84855c9e5c336e56fd9a3acb60 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 16 Feb 2026 19:09:57 +0200 Subject: [PATCH] improve locale setting --- src/App.js | 10 ++++++++-- src/lib/language.js | 12 +----------- src/stores/i18n.js | 11 +++++++++++ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/App.js b/src/App.js index 384e89c64..65302f54a 100644 --- a/src/App.js +++ b/src/App.js @@ -2,6 +2,8 @@ import { throttle } from 'lodash' import { mapState } from 'pinia' import { defineAsyncComponent } from 'vue' import { mapGetters } from 'vuex' +import messages from 'src/i18n/messages' +import localeService from 'src/services/locale/locale.service.js' import DesktopNav from './components/desktop_nav/desktop_nav.vue' import EditStatusModal from './components/edit_status_modal/edit_status_modal.vue' @@ -22,6 +24,8 @@ import WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_pan import { getOrCreateServiceWorker } from './services/sw/sw' import { windowHeight, windowWidth } from './services/window_utils/window_utils' +import { useI18nStore } from 'src/stores/i18n.js' +import { useEmojiStore } from 'src/stores/emoji.js' import { useInstanceStore } from 'src/stores/instance.js' import { useInstanceCapabilitiesStore } from 'src/stores/instance_capabilities.js' import { useInterfaceStore } from 'src/stores/interface.js' @@ -73,8 +77,10 @@ export default { }, created() { // Load the locale from the storage - const val = useSyncConfigStore().mergedConfig.interfaceLanguage - useSyncConfigStore().setSimplePrefAndSave({ path: 'interfaceLanguage', value: val }) + const value = useSyncConfigStore().mergedConfig.interfaceLanguage + useI18nStore().setLanguage(value) + useEmojiStore().loadUnicodeEmojiData(value) + document.getElementById('modal').classList = ['-' + this.layoutType] // Create bound handlers diff --git a/src/lib/language.js b/src/lib/language.js index beabfcca8..af53eeffd 100644 --- a/src/lib/language.js +++ b/src/lib/language.js @@ -2,12 +2,6 @@ import Cookies from 'js-cookie' import { useEmojiStore } from 'src/stores/emoji.js' import { useI18nStore } from 'src/stores/i18n.js' -import { useSyncConfigStore } from 'src/stores/sync_config.js' - -import messages from 'src/i18n/messages' -import localeService from 'src/services/locale/locale.service.js' - -const BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage' export const piniaLanguagePlugin = ({ store, options }) => { if (store.$id === 'sync_config') { @@ -15,12 +9,8 @@ export const piniaLanguagePlugin = ({ store, options }) => { if (name === 'setPreference') { const { path, value } = args[0] if (path === 'simple.interfaceLanguage') { - messages.setLanguage(useI18nStore().i18n, value) + useI18nStore().setLanguage(value) useEmojiStore().loadUnicodeEmojiData(value) - Cookies.set( - BACKEND_LANGUAGE_COOKIE_NAME, - localeService.internalToBackendLocaleMulti(value), - ) } } }) diff --git a/src/stores/i18n.js b/src/stores/i18n.js index fee09f4bd..f013f7c8f 100644 --- a/src/stores/i18n.js +++ b/src/stores/i18n.js @@ -1,6 +1,10 @@ import Cookies from 'js-cookie' +import messages from 'src/i18n/messages' +import localeService from 'src/services/locale/locale.service.js' import { defineStore } from 'pinia' +const BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage' + export const useI18nStore = defineStore('i18n', { state: () => ({ i18n: null, @@ -11,5 +15,12 @@ export const useI18nStore = defineStore('i18n', { i18n: newI18n.global, }) }, + setLanguage(value) { + messages.setLanguage(this.i18n, value) + Cookies.set( + BACKEND_LANGUAGE_COOKIE_NAME, + localeService.internalToBackendLocaleMulti(value), + ) + } }, })