# 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), которые используются для инструкций по переводу для каждого ключа.