Интернационализация
Planner поддерживает русский и английский языки с полным переводом интерфейса.
Настройка
- Библиотека: vue-i18n@9 с Composition API (
legacy: false) - Плагин: Зарегистрирован глобально в
main.ts—$t()доступен в шаблонах без вызоваuseI18n() - Сохранение языка: Хранится в
localStorage.getItem('locale')с fallback наnavigator.language.slice(0,2), затем'ru' - Язык по умолчанию: Русский (
'ru')
Файлы переводов
packages/shared-i18n/src/index.ts— ~1000 ключей для каждого языка (en + ru)
Использование
В шаблонах
vue
<template>
<h3>{{ $t('comments.title') }}</h3>
<Button :label="$t('comments.save')" />
</template>В скриптах
typescript
const { t } = useI18n()
const label = t('nav.dashboard')Переключатель языка
Компонент LanguageSwitcher.vue предоставляет кнопки EN/RU. Находится в настройках в разделе «Внешний вид».
typescript
function switchLocale(locale: 'en' | 'ru') {
localStorage.setItem('locale', locale)
i18n.global.locale.value = locale
}Локаль календаря
FullCalendar импортирует русскую локаль из @fullcalendar/core/locales/ru и переключается реактивно:
typescript
import ruLocale from '@fullcalendar/core/locales/ru'
const calendarLocale = computed(() =>
i18n.global.locale.value === 'ru' ? ruLocale : undefined
)Структура ключей переводов
app.* — Строки уровня приложения (загрузка и т.д.)
nav.* — Метки навигации
auth.* — Вход/регистрация
org.* — Страницы организаций
team.* — Страницы команд
project.* — Страницы проектов
task.* — Управление задачами
comments.* — Раздел комментариев
chat.* — Интерфейс чата
calendar.* — Просмотр календаря
notifications.* — Центр уведомлений
settings.* — Страницы настроек
admin.* — Панель администратора
common.* — Общие метки (сохранить, отменить, удалить и т.д.)