up frontend
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// src/main.ts
|
||||
import { createApp } from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import App from './App.vue'
|
||||
@@ -9,9 +10,19 @@ 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: 'en',
|
||||
locale: initialLocale,
|
||||
fallbackLocale: 'en',
|
||||
messages: { en, ru }
|
||||
})
|
||||
@@ -30,9 +41,14 @@ Promise.all([
|
||||
settingsStore.loadSettings(),
|
||||
userStore.fetchProfile().catch(() => {})
|
||||
]).then(() => {
|
||||
// Устанавливаем язык из профиля, если есть
|
||||
if (userStore.language) {
|
||||
// Если пользователь авторизован – используем язык из профиля
|
||||
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')
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user