Lingo.dev + Vue.js однокомпонентные файлы

CLI Lingo.dev поддерживает одиночные файлы компонентов Vue I18n, позволяя вам хранить переводы внутри ваших файлов .vue.

Примечание: Если ваше приложение на Vue.js использует JSON-файлы локализации, используйте формат .json для фронтенда.

Быстрая настройка

Создайте файл конфигурации i18n.json в корневой директории вашего проекта:

{
  "version": 1,
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "vue-json": {
      "include": ["src/**/*.vue"]
    }
  }
}

Эта конфигурация устанавливает английский как исходный язык, нацеливается на испанский, французский и немецкий языки и обрабатывает все файлы .vue в директории src.

Найти поддерживаемые языки

Список доступных исходных и целевых языков:

npx lingo.dev@latest show locale sources
npx lingo.dev@latest show locale targets

Перевести всё

Выполните следующую команду, чтобы перевести все компоненты Vue:

npx lingo.dev@latest i18n

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/**/*.vue"],
  "exclude": ["src/components/NoTranslate.vue"]
}

Гибридный перевод

Совмещайте перевод на основе компонентов и файлов:

"buckets": {
  "vue-json": {
    "include": ["src/**/*.vue"]
  },
  "json": {
    "include": ["src/locales/[locale].json"]
  }
}

Этот подход позволяет хранить переводы, относящиеся к конкретным компонентам, внутри компонентов, а глобальные переводы — в отдельных JSON-файлах.

Почему стоит использовать этот подход

  • Переводы остаются с компонентами, которые их используют
  • Нет необходимости извлекать строки в отдельные файлы
  • ИИ понимает контекст компонентов для более качественного перевода
  • Переводятся только изменённые элементы
  • Соответствует рекомендованным шаблонам Vue I18n

Lingo.dev предоставляет переводы на основе ИИ, сохраняя компонентную архитектуру Vue.