Skip to content

Интернационализация

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.*           — Общие метки (сохранить, отменить, удалить и т.д.)