Lingo.dev + .json (Vue.js)

Lingo.dev CLI переводит JSON-файлы i18n для Vue.js, сохраняя форматирование сообщений, синтаксис интерполяции и специфические для Vue.js соглашения. CLI работает безупречно с библиотекой vue-i18n, сохраняет все форматирование сообщений Vue, placeholders, такие как {name}, корректно обрабатывает связывание сообщений с помощью синтаксиса @: и сохраняет placeholders для интерполяции компонентов.

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

Настройка для файлов локализации i18n в Vue.js:

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

Напоминание: [locale] — это placeholder, который должен оставаться в конфигурации буквально, так как он заменяется на фактическую локаль во время выполнения CLI.

Перевод файлов Vue i18n

npx lingo.dev@latest i18n

Сохраняет форматирование сообщений Vue.js, placeholders для интерполяции и специфический синтаксис vue-i18n.

Возможности Vue i18n

Интерполяция сообщений

{
  "message": {
    "hello": "Привет, {name}!",
    "welcome": "Добро пожаловать, {name}, у вас {count} сообщений"
  }
}

Правила множественного числа

{
  "car": "машина | машины",
  "apple": "нет яблок | одно яблоко | {count} яблок"
}

Связанные сообщения

{
  "common": {
    "name": "Название приложения"
  },
  "welcome": "Добро пожаловать в @:common.name"
}

Синтаксис связывания сообщений Vue @: сохраняется.

Расширенные возможности Vue

Поддержка HTML-сообщений

{
  "message": {
    "title": "Добро пожаловать на <strong>нашу платформу</strong>",
    "link": "Посетите наш <a href='/help'>центр помощи</a>"
  }
}

Интерполяция компонентов

{
  "message": {
    "terms": "Я согласен с {0}условиями использования{/0} и {1}политикой конфиденциальности{/1}"
  }
}

Синтаксис placeholders для интерполяции компонентов остается неизменным.

Форматирование даты, времени и чисел

{
  "datetime": {
    "short": "{value}",
    "long": "{value}"
  },
  "number": {
    "currency": "{value}"
  }
}

Расширенная конфигурация

Несколько директорий для локалей

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

Блокировка ключей, специфичных для Vue

"vue-json": {
  "include": ["src/locales/[locale].json"],
  "lockedKeys": ["$vuetify", "dateTimeFormats", "numberFormats"]
}