В Quasar Framework локализация играет ключевую роль при разработке
многоязычных приложений. Поддержка разных языков достигается за счёт
интеграции с vue-i18n, которая позволяет организовывать
переводы в отдельные файлы, управлять динамическими сообщениями и
эффективно масштабировать проект.
Файлы локализации в Quasar располагаются в папке
src/i18n/ или любой другой, указанной в конфигурации
проекта. Каждый язык представляется отдельным файлом в формате
JavaScript или JSON. Общепринятые
соглашения:
Название файла соответствует коду языка, например:
en-us.js — английский (США)ru-ru.js — русскийfr-fr.js — французскийФайлы экспортируют объект с ключами и значениями:
export default {
greeting: "Привет",
farewell: "До свидания",
menu: {
home: "Главная",
about: "О нас"
}
}
menu в примере выше) позволяют
структурировать переводы по разделам приложения, что облегчает поддержку
больших проектов.Для интеграции переводов создается отдельный модуль
i18n.js:
import { createI18n } from 'vue-i18n'
import enUS from './en-us'
import ruRU from './ru-ru'
const messages = {
'en-US': enUS,
'ru-RU': ruRU
}
const i18n = createI18n({
locale: 'ru-RU',
fallbackLocale: 'en-US',
messages
})
export default i18n
Ключевые моменты:
locale — текущий язык приложения.fallbackLocale — язык по умолчанию, если перевод для
текущего языка отсутствует.messages — объект с импортированными файлами
локализации.Для оптимизации больших приложений Quasar поддерживает ленивую загрузку языковых пакетов. Это позволяет загружать перевод только при необходимости:
const loadLocale = async (locale) => {
const messages = await import(`./${locale}.js`)
i18n.global.setLocaleMessage(locale, messages.default)
i18n.global.locale.value = locale
}
import() динамически загружает файл перевода.setLocaleMessage обновляет сообщения для указанного
языка.Для крупных проектов рекомендуется структурировать переводы в виде модулей:
i18n/
├─ en-us/
│ ├─ common.js
│ ├─ menu.js
│ └─ forms.js
├─ ru-ru/
│ ├─ common.js
│ ├─ menu.js
│ └─ forms.js
import { createI18n } from 'vue-i18n'
import enCommon from './en-us/common'
import enMenu from './en-us/menu'
import ruCommon from './ru-ru/common'
import ruMenu from './ru-ru/menu'
const messages = {
'en-US': { ...enCommon, ...enMenu },
'ru-RU': { ...ruCommon, ...ruMenu }
}
export default createI18n({ locale: 'ru-RU', messages })
Quasar с vue-i18n позволяет обращаться к переводам
через:
<template>
<q-btn :label="$t('menu.home')" />
</template>
$t('ключ') — основной метод для получения
перевода.export default {
welcome: 'Добро пожаловать, {name}!'
}
<p>{{ $t('welcome', { name: 'Иван' }) }}</p>
vue-i18n в Quasar позволяет использовать
форматирование чисел и дат в соответствии с
локалью:
const number = 123456.78
<p>{{ $n(number, 'currency') }}</p>
Конфигурация форматов выполняется при создании i18n:
const i18n = createI18n({
locale: 'ru-RU',
numberFormats: {
'ru-RU': { currency: { style: 'currency', currency: 'RUB' } }
}
})
Структура файлов локализации в Quasar обеспечивает удобное масштабирование и поддержку многоязычных интерфейсов. Четкое разделение на модули и стандартизация ключей ускоряют разработку и делают проект более управляемым.