meta.json

Что такое файл meta.json? Как он используется?

Введение

meta.json — это файл, который компилятор Lingo.dev генерирует во время сборки. Он отслеживает весь переводимый контент, обнаруженный в React-приложении, служа инвентарем, который связывает анализ на этапе сборки с переводом во время выполнения.

Примечание: Все изменения в файле meta.json должны быть зафиксированы в репозитории.

Пример файла

Пример (очень минимального) файла meta.json:

{
  "version": 0.1,
  "files": {
    "components/hero.tsx": {
      "scopes": {
        "3/declaration/body/0/argument/1/1": {
          "type": "element",
          "hash": "a1b2c3d4e5f6...",
          "context": "",
          "skip": false,
          "overrides": {},
          "content": "Welcome to our app"
        }
      }
    }
  }
}

Чтобы понять значение всех свойств, см. Свойства схемы.

Расположение файла

По умолчанию файл meta.json сохраняется в директории src/lingo, относительно расположения конфигурации компилятора (например, файла vite.config.ts).

Чтобы узнать, как настроить это расположение, см. Параметры компилятора.

Свойства схемы

Этот раздел описывает все свойства, содержащиеся в файле meta.json.

version

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

  • Тип: number
  • Обязательно: Да

files

Объект-контейнер, который организует все переводимые области по их путям к исходным файлам. Каждый ключ представляет относительный путь от корня исходного кода (например, "components/hero.tsx", "pages/home.jsx").

  • Тип: object
  • Обязательно: Да

files[filePath].scopes

Контейнер для всего переводимого контента, обнаруженного в конкретном исходном файле. Каждый ключ — это идентификатор на основе AST, который уникально определяет переводимый контент в файле.

  • Тип: object
  • Обязательно: Да

files[filePath].scopes[astKey].type

Указывает, является ли переводимый контент содержимым JSX-элемента или значением атрибута JSX.

  • Тип: "element" | "attribute"
  • Обязательно: Да

files[filePath].scopes[astKey].hash

SHA-256 хэш исходного содержимого, используемый для обнаружения изменений. Когда исходное содержимое изменяется, этот хэш также изменяется, указывая на необходимость повторного перевода.

  • Тип: string
  • Обязательно: Да

files[filePath].scopes[astKey].context

Контекстная информация, помогающая переводчикам понять цель или местоположение содержимого.

  • Тип: string
  • Обязательно: Нет

files[filePath].scopes[astKey].skip

Флаг, указывающий, следует ли исключить это содержимое из перевода.

  • Тип: boolean
  • Обязательно: Да

files[filePath].scopes[astKey].overrides

Локализованные переопределения перевода, которые обходят стандартный процесс перевода. Полезно для названий брендов, технических терминов или пользовательских переводов.

  • Тип: object
  • Обязательно: Да

files[filePath].scopes[astKey].content

Фактический исходный текст, который необходимо перевести, извлеченный из ваших React-компонентов.

  • Тип: string
  • Обязательно: Да