Lingo.dev + .jsonc (JSON с комментариями)

Lingo.dev CLI переводит файлы JSONC (JSON с комментариями), поддерживая все стандартные функции JSON, а также комментарии и завершающие запятые. CLI извлекает комментарии как подсказки для перевода, сохраняет точное форматирование, умно обрабатывает вложенные структуры и обрабатывает только изменённый контент для экономии затрат.

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

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

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "jsonc": {
      "include": ["locales/[locale].jsonc"]
    }
  }
}

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

Перевод всего

npx lingo.dev@latest i18n

Автоматически обрабатывает вложенные структуры, извлекает комментарии как подсказки для перевода и обновляет только изменённый контент.

Подсказки для перевода на основе комментариев

Основное преимущество JSONC — использование комментариев для предоставления контекста перевода:

{
  // Этот комментарий предоставляет контекст для приветствия
  "greeting": "Hello, world!",
  "button": "Click me" /* Это объясняет назначение кнопки */,
  /*
   * Многострочный комментарий для сложного контекста
   * с объяснением культурных нюансов
   */
  "welcome": "Welcome to our app"
}

Комментарии автоматически извлекаются как подсказки для улучшения качества перевода и предоставления контекста AI-переводчикам.

Умное сохранение структуры

Сохраняет сложные иерархии и поддерживает завершающие запятые:

{
  "nav": {
    "home": "Home", // Элемент навигации
    "about": {
      "team": "Our Team" // Вложенная навигация
    },
  },
  "items": {
    "one": "{{count}} item",
    "other": "{{count}} items", // Поддержка множественного числа
  },
}

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

Исключение файлов

"jsonc": {
  "include": ["locales/[locale]/*.jsonc"],
  "exclude": ["locales/[locale]/config.jsonc"]
}

Блокировка технических ключей

"jsonc": {
  "lockedKeys": ["app/version", "settings/apiKey"]
}

Используйте прямой слэш (/) для путей вложенных ключей или звёздочку (*) для совпадения с несколькими путями ключей.