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
- Обязательно: Да