Files
iiko-connector/frontend/src/main.ts
2026-04-27 15:45:06 +03:00

55 lines
1.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// src/main.ts
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import '@/style.css'
import { useSettingsStore } from './stores/settings'
import { useUserStore } from './stores/user'
import { createI18n } from 'vue-i18n'
import en from '@/locales/en.json'
import ru from '@/locales/ru.json'
// Функция определения языка браузера
function getBrowserLocale(): string {
const browserLang = navigator.language.split('-')[0]
return browserLang === 'ru' ? 'ru' : 'en'
}
// Получаем сохраненный язык из localStorage (для неавторизованных)
const storedLocale = localStorage.getItem('locale')
const initialLocale = storedLocale || getBrowserLocale()
const i18n = createI18n({
legacy: false,
locale: initialLocale,
fallbackLocale: 'en',
messages: { en, ru }
})
const app = createApp(App)
const pinia = createPinia()
app.use(pinia)
app.use(router)
app.use(i18n)
const settingsStore = useSettingsStore()
const userStore = useUserStore()
// Загружаем настройки и профиль
Promise.all([
settingsStore.loadSettings(),
userStore.fetchProfile().catch(() => {})
]).then(() => {
// Если пользователь авторизован используем язык из профиля
if (userStore.id && userStore.language) {
i18n.global.locale.value = userStore.language
// Сохраняем в localStorage для синхронизации (опционально)
localStorage.setItem('locale', userStore.language)
} else {
// Для неавторизованных сохраняем текущий язык в localStorage
localStorage.setItem('locale', i18n.global.locale.value)
}
app.mount('#app')
})