Интернационализация и локализация
Общие принципы
-
Интернационализация осуществлена при помощи подключения плагина vue3-i18n
-
Для настройки новой локали создаётся json файл с определённой структурой со следующими правилами:
-
Вложенная структруа должна иметь четыре уровня
-
Верхний уровень определяет название экранной формы
-
Второй уровень - тип элемента управления (кнопки, поля таблицы, поля карточки и т.п.)
-
Третий уровень - название элемента управления
-
Нижний уроваень - вид константы для элемента управления (заголовок, всплывающая подсказка)
-
Подключение плагина интернационализации
vite.config.ts
vueI18n({
include: resolve(__dirname, "./src/locales/**"),
}),
Подключение плагина
import { createI18n } from "vue-i18n";
import messages from "@intlify/vite-plugin-vue-i18n/messages";
const i18n = createI18n({
legacy: false,
locale: import.meta.env.VITE_APP_I18N_LOCALE,
fallbackLocale: import.meta.env.VITE_APP_I18N_LOCALE,
messages,
});
/* eslint @typescript-eslint/ban-ts-comment: "off" */
// @ts-ignore
const $tt = i18n.global.t;
export { i18n, $tt };
Примеры использования интернационализации
Интернационализация в шаблоне (например, заголовки, футеры)
<h1>{{ $t("UrlStatePage.title") }}</h1>
Интернационализация в компоненте
import { useI18n } from "vue-i18n";
text: useI18n().t("GridPage.columns.name"),
Интернационализация в произвольном месте кода (например, содержимое грида)
import { $tt } from "@/plugins/i18n";
for (const header of headers) {
header.text = $tt("GridPage.columns." + header.value);
}