Lingo.dev + Vue.js однофайловые компоненты
CLI Lingo.dev поддерживает однофайловые компоненты Vue I18n, что позволяет хранить переводы прямо в ваших файлах .vue.
Обратите внимание: Если ваше приложение на Vue.js использует локализационные файлы в формате JSON, используйте формат .json для фронтенда.
Быстрый старт
Создайте файл конфигурации i18n.json в корне вашего проекта:
{
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"vue-json": {
"include": ["src/components/*.vue", "src/views/*.vue"]
}
}
}
Эта конфигурация задаёт английский как исходный язык, нацеливается на испанский, французский и немецкий, и обрабатывает файлы .vue в директориях src/components и src/views.
Найти поддерживаемые языки
Посмотреть доступные исходные и целевые языки:
npx lingo.dev@latest show locale sources
npx lingo.dev@latest show locale targets
Перевести всё
Выполните следующую команду, чтобы перевести все компоненты Vue:
npx lingo.dev@latest run
CLI сканирует ваши компоненты на наличие блоков <i18n>, переводит новый или изменённый контент и обновляет переводы прямо в файлах.
Как это работает с компонентами Vue
Lingo.dev работает напрямую со стандартной структурой i18n для Vue:
<template>
<div>
<h1>{{ $t("welcome") }}</h1>
<p>{{ $t("description") }}</p>
</div>
</template>
<i18n>
{
"en": {
"welcome": "Welcome",
"description": "This is a Vue component"
}
}
</i18n>
После перевода ваш компонент будет содержать все целевые языки:
<i18n>
{
"en": {
"welcome": "Welcome",
"description": "This is a Vue component"
},
"es": {
"welcome": "Bienvenido",
"description": "Este es un componente Vue"
},
"fr": {
"welcome": "Bienvenue",
"description": "Ceci est un composant Vue"
}
}
</i18n>
Расширенная конфигурация
Исключение файлов
Исключите определённые компоненты из перевода:
"vue-json": {
"include": ["src/components/*.vue", "src/views/*.vue"],
"exclude": ["src/components/NoTranslate.vue"]
}
Гибридный перевод
Комбинируйте перевод внутри компонентов и файловый перевод:
"buckets": {
"vue-json": {
"include": ["src/components/*.vue", "src/views/*.vue"]
},
"json": {
"include": ["src/locales/[locale].json"]
}
}
Этот подход позволяет хранить переводы, относящиеся к конкретным компонентам, внутри самих компонентов, а глобальные переводы — в отдельных JSON-файлах.
Почему стоит использовать этот подход
- Переводы хранятся вместе с компонентами, которые их используют
- Нет необходимости выносить строки в отдельные файлы
- ИИ учитывает контекст компонента для более точного перевода
- Переводятся только изменённые строки
- Совместим с рекомендуемыми паттернами Vue I18n
Lingo.dev предлагает переводы на базе ИИ, сохраняя компонентную архитектуру Vue.