improve locale setting

This commit is contained in:
Henry Jameson 2026-02-16 19:09:57 +02:00
commit 9d657395ff
3 changed files with 20 additions and 13 deletions

View file

@ -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

View file

@ -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),
)
}
}
})

View file

@ -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),
)
}
},
})