# gt: General Translation CLI tool: JSON
URL: https://generaltranslation.com/ru/docs/cli/formats/json.mdx
---
title: JSON
description: Как автоматически переводить файлы JSON с помощью General Translation
---
## Обзор
`gt` можно использовать для автоматического перевода JSON-файлов проекта независимо от того, какую библиотеку i18n вы используете.
**Примечание:** Сейчас мы поддерживаем пользовательские синтаксис и форматирование строк для
следующих сторонних библиотек i18n: `next-intl`, `i18next`. Если вы используете
другую библиотеку i18n, результаты перевода строк с пользовательским
синтаксисом и форматированием (например, сообщений ICU) могут быть неточными. Не
видите здесь свою любимую библиотеку? [Пожалуйста, сообщите нам
об этом](https://github.com/generaltranslation/gt/issues), и мы добавим её,
как только сможем!
Выполните следующие 4 шага:
Добавьте переменные окружения
Установите [`gt`](/docs/cli)
Создайте файл `gt.config.json`
Запустите [`gt translate`](/docs/cli/translate#translate)
**Совет:**
Чтобы не возиться с файлами перевода, используйте [компонент ``](/docs/react/guides/t).
***
## Шаг 1: Добавьте переменные окружения
Добавьте в переменные окружения рабочий API-ключ и идентификатор проекта.
Это необходимо для использования инструмента `gt`.
Их можно получить на [панели управления General Translation](https://generaltranslation.com/dashboard).
```bash title=".env"
GT_API_KEY=
GT_PROJECT_ID=
```
## Шаг 2: Установите `gt`
Установите инструмент `gt` в проект.
```bash
npm i gt
```
```bash
yarn add --dev gt
```
```bash
bun add --dev gt
```
```bash
pnpm add --save-dev gt
```
## Шаг 3: Создайте файл `gt.config.json`
Создайте файл `gt.config.json` в корне проекта.
```json title="gt.config.json" copy
{
"defaultLocale": "en",
"locales": ["zh", "es", "ja"],
"files": {
"json": {
"include": ["i18n/[locale]/*.json"]
}
}
}
```
При необходимости настройте файл `gt.config.json` под свои нужды. Подробнее см. в документации по [конфигурации](/docs/cli/reference/config).
Обновите формат файла `json` так, чтобы путь `include` соответствовал структуре вашего проекта.
Переводы сохраняют синтаксис исходной строки.
## Шаг 4: Добавьте команду `gt translate` в процесс сборки
Добавьте команду `gt translate` в процесс сборки или CI перед командой сборки, чтобы переводы автоматически добавлялись в проект.
```json title="package.json"
{
"scripts": {
"translate": "npx gt translate",
"build": "npm run translate && "
}
}
```
Это сгенерирует переводы для всех ваших локалей и сохранит их в проекте.
Если вы хотите закоммитить эти файлы в репозиторий, вместо этого перед коммитом выполните эту команду.
Готово! Теперь при любом изменении проекта все JSON-файлы с переводами будут обновляться автоматически.
***
## Метаданные для ключей
Вы можете добавлять к отдельным строкам инструкции по переводу для конкретных ключей с помощью сопутствующего файла `.metadata.json`. Это позволяет задавать контекст, ограничения по числу символов и контекст в исходном коде для отдельных ключей, не изменяя исходный файл.
```json title="translations.json"
{
"nav": {
"home": "Home",
"bank": "Bank",
"save": "Save"
}
}
```
```json title="translations.metadata.json"
{
"nav": {
"bank": {
"context": "Riverbank — the side of a river. NOT a financial institution."
},
"save": {
"context": "Sports term — a goalkeeper preventing a goal. NOT saving data.",
"maxChars": 12
}
}
}
```
Не всем ключам нужны метаданные — добавляйте записи только для тех ключей, которым требуются специальные указания для перевода.
Полный список поддерживаемых полей см. в [справочнике по метаданным для ключей](/docs/cli/reference/keyed-metadata).
***
## Примечания
* Вы можете автоматически добавлять переводы в проект с помощью команды [`gt translate`](/docs/cli/translate#translate).
* Если вы хотите коммитить файлы переводов, перед коммитом следует запустить команду `gt translate`.
* Чтобы настроить путь вывода для переводов, см. документацию по [конфигурации](/docs/cli/reference/config).
## Что дальше
* См. [команду translate](/docs/cli/translate), чтобы узнать подробности об использовании CLI.
* Узнайте о [метаданных для ключей](/docs/cli/reference/keyed-metadata), которые используются для инструкций по переводу для каждого ключа.