# gt: General Translation CLI tool: Конфигурация
URL: https://generaltranslation.com/ru/docs/cli/reference/config.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Настройка CLI General Translation с помощью файла gt.config.json. Справочник API для gt.config.json.

Файл `gt.config.json` определяет, что именно переводит CLI и куда сохраняются результаты. Разместите его в корневой директории проекта; начиная с версии `gt` 2.23.0, CLI не читает `src/gt.config.json`, если явно не передать `--config src/gt.config.json`. Создать его можно с помощью [`gt init`](/docs/cli/reference/commands/init) или [`gt configure`](/docs/cli/reference/commands/configure), либо написать вручную.

*Примечание: Добавьте [JSON Schema](https://assets.gtx.dev/config-schema.json) с ключом `$schema`, чтобы редактор поддерживал проверку и автодополнение. Опубликованная схема отстаёт и не включает часть допустимых ключей файлов, в том числе `pot`, `html`, `txt`, `twilioContentJson`, `lottie`, `dotStrings`, `dotStringsdict`, `androidStrings`, `xcstrings`, `srt` и `resx`, а также не содержит `fonts` и `omitConfigIds`. Редакторы могут помечать неподдерживаемые схемой поля, пока схема не будет обновлена.*

## Параметры [#options]

| Параметр                                                          | Описание                                                                                      | Тип                  | Необязательно | По умолчанию          |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -------------------- | ------------- | --------------------- |
| [`projectId`](#project-id)                                        | проект, используемый для API и процессов перевода.                                            | `string`             | Да            | `GT_PROJECT_ID`       |
| [`baseUrl`](#base-url)                                            | Базовый URL для запросов к General Translation API.                                           | `string`             | Да            | `https://api.gtx.dev` |
| [`defaultLocale`](#default-locale)                                | Локаль, на которой написан исходный контент.                                                  | `string`             | Да            | `en`                  |
| [`locales`](#locales)                                             | Целевые локали для перевода.                                                                  | `string[]`           | Да            | —                     |
| [`files`](#files)                                                 | Какие файлы переводить и где их сохранять.                                                    | `object`             | Да            | —                     |
| [`fonts`](#fonts)                                                 | Файлы шрифтов, доступные задачам перевода Lottie.                                             | `object`             | Да            | —                     |
| [`publish`](#publish)                                             | Публиковать переведённые файлы в CDN.                                                         | `boolean`            | Да            | `false`               |
| [`stageTranslations`](#stage)                                     | Использовать рабочий процесс с подготовкой версий перед скачиванием переводов.                | `boolean`            | Да            | `false`               |
| [`omitConfigIds`](#omit-config-ids)                               | Не записывать сгенерированные идентификаторы версий и веток в этот файл.                      | `boolean`            | Да            | `false`               |
| [`requiresReview`](#requires-review)                              | Политика обязательной проверки по умолчанию для всех переведённых файлов.                     | `boolean`            | Да            | `false`               |
| [`src`](#src)                                                     | Glob-паттерны исходных файлов для поиска встроенного контента.                                 | `string[]`           | Да            | Зависит от фреймворка |
| [`dictionary`](#dictionary)                                       | Путь к файлу словаря.                                                                         | `string`             | Да            | —                     |
| [`branchOptions`](#branch-options)                                | Настройки отслеживания переводов по веткам.                                                   | `object`             | Да            | —                     |
| [`customMapping`](#custom-mapping)                                | Алиасы локалей и переопределения свойств.                                                     | `object`             | Да            | —                     |
| [`options.docsUrlPattern`](#docs-url-pattern)                     | Паттерн или паттерны URL, определяющие, где в ссылках на документацию размещаются коды локалей. | `string \| string[]` | Да            | `/[locale]`           |
| [`options.experimentalLocalizeStaticUrls`](#localize-static-urls) | Локализовать статические URL в переведённых файлах Markdown и MDX.                            | `boolean \| object`  | Да            | `false`               |
| [`options.saveLocal`](#save-local)                                | Обнаруживать и отправлять локальные правки перевода перед постановкой в очередь.              | `boolean`            | Да            | `false`               |

## `projectId` [#project-id]

**Тип** `string` · **Необязательно** · **По умолчанию** `GT_PROJECT_ID`

Проект, используемый для работы с API и процессов перевода. Вход в систему не выбирает проект: привяжите его здесь или через переменные окружения. Флаг `--project-id` переопределяет значение из окружения. Если в конфигурации указан `projectId`, то его несовпадение с флагом или с ID, разрешённым из окружения, приводит к ошибке проверки; [`gt init`](/docs/cli/reference/commands/init) и [`gt configure`](/docs/cli/reference/commands/configure) в этом случае вместо ошибки заменяют его значением `--project-id`. При разрешении из окружения распознаются не только `GT_PROJECT_ID`, но и префиксы поддерживаемых фреймворков. (См. [Аутентификация и загрузка переменных окружения](/docs/cli/guides/configuring#credentials).)

```json title="gt.config.json"
{
  "projectId": "project-id"
}
```

## `baseUrl` [#base-url]

**Type** `string` · **Optional** · **Default** `https://api.gtx.dev`

Origin API, который используется в запросах CLI, включая [`gt api`](/docs/cli/reference/commands/api). Задавайте это значение только в том случае, если в вашем рабочем процессе используется собственный эндпоинт General Translation API.

```json title="gt.config.json"
{
  "baseUrl": "https://api.gtx.dev"
}
```

## `defaultLocale` [#default-locale]

**Тип** `string` · **Необязательно** · **По умолчанию** `en`

Локаль, на которой написан исходный контент. Это локаль, с которой CLI выполняет перевод, а также резервная локаль при использовании `gt-next`, `gt-react` или `gt-vue`.

```json title="gt.config.json"
{
  "defaultLocale": "en"
}
```

## `locales` [#locales]

**Тип** `string[]` · **Необязательно** · **По умолчанию** —

Целевые локали, на которые будет переводиться контент. Список допустимых кодов см. в разделе [поддерживаемые локали](/docs/platform/dashboard/reference/supported-locales). Инициализаторы фреймворков, принимающие список локалей, также используют их как локали, которые поддерживает ваше приложение.

```json title="gt.config.json"
{
  "locales": ["fr", "es", "ja"]
}
```

## `files` [#files]

**Тип** `object` · **Необязательно** · **По умолчанию** —

Объект, содержащий по одному ключу для каждого типа файла, который нужно перевести. Каждому типу соответствует объект с настройками. См. раздел [Форматы файлов](/docs/cli/reference/formats/gt-jsx-files) с рекомендациями для каждого типа.

### Поддерживаемые типы файлов

| Ключ                | Тип файла                                                                                               | Ссылка                                                             |
| ------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `gt`                | Файлы General Translation для `gt-next`, `gt-react`, `gt-react-native`, `gt-tanstack-start` и `gt-vue`. | [GT](/docs/cli/reference/formats/gt-jsx-files)                     |
| `json`              | JSON-файлы.                                                                                             | [JSON](/docs/cli/reference/formats/json-files)                     |
| `yaml`              | Файлы YAML (`.yaml` и `.yml`).                                                                          | [YAML](/docs/cli/reference/formats/yaml-files)                     |
| `ts`                | Файлы TypeScript.                                                                                       | [TypeScript и JavaScript](/docs/cli/reference/formats/ts-js-files) |
| `js`                | Файлы JavaScript.                                                                                       | [TypeScript и JavaScript](/docs/cli/reference/formats/ts-js-files) |
| `pot`               | Файлы gettext PO/POT.                                                                                   | [PO / POT](/docs/cli/reference/formats/po-pot-files)               |
| `twilioContentJson` | Шаблоны Twilio Content JSON.                                                                            | —                                                                  |
| `mdx`               | MDX-файлы.                                                                                              | [MDX и Markdown](/docs/cli/reference/formats/mdx-md-files)         |
| `md`                | Файлы Markdown.                                                                                         | [MDX и Markdown](/docs/cli/reference/formats/mdx-md-files)         |
| `html`              | Файлы HTML.                                                                                             | [HTML](/docs/cli/reference/formats/html-files)                     |
| `txt`               | Текстовые файлы.                                                                                        | [.txt](/docs/cli/reference/formats/plain-text-files)               |
| `xcstrings`         | Каталоги строк Apple (`.xcstrings`).                                                                    | [.xcstrings](/docs/cli/reference/formats/xcstrings-files)          |
| `dotStrings`        | Таблицы `.strings`, по одной на локаль в каталоге `.lproj`.                                             | [.strings](/docs/cli/reference/formats/dot-strings-files)          |
| `dotStringsdict`    | Файлы множественных форм `.stringsdict`, по одному на локаль в каталоге `.lproj`.                       | [.stringsdict](/docs/cli/reference/formats/dot-stringsdict-files)  |
| `androidStrings`    | Файлы ресурсов Android `strings.xml`.                                                                   | [strings.xml](/docs/cli/reference/formats/android-strings-files)   |
| `resx`              | Файлы ресурсов .NET (`.resx`, а также `.resw` с той же схемой).                                         | [.resx](/docs/cli/reference/formats/resx-files)                    |
| `srt`               | Файлы субтитров SubRip (`.srt`).                                                                        | [SRT](/docs/cli/reference/formats/srt-files)                       |
| `lottie`            | Файлы анимации dotLottie (`.lottie`).                                                                   | [Lottie](/docs/cli/reference/formats/lottie-files)                 |

Для `dotStrings` и `dotStringsdict` требуется `gt` версии 2.18.1 или новее, для `androidStrings` — `gt` версии 2.19.0 или новее, для `xcstrings` — `gt` версии 2.21.0 или новее, для `srt` — `gt` версии 2.22.2 или новее, а для `resx` — `gt` версии 2.23.1 или новее.

<Callout type="info">
  **Изменено в v2.18.1:** Ключи файлов Apple изменились с `strings` и `stringsdict` на `dotStrings` и `dotStringsdict`. Прежние ключи в текущих версиях не распознаются.
</Callout>

### Ключи типов файлов

Каждый тип файла поддерживает следующие ключи.

* `include` — массив glob-шаблонов, соответствующих файлам для перевода. Используйте заполнитель `[locale]`: CLI заменяет его на `defaultLocale`, чтобы найти исходные файлы, и на каждый целевой код, чтобы сохранить переводы. Обязательно для всех типов, кроме `gt`.
* `exclude` — массив glob-шаблонов для исключения. Заполнитель `[locale]` здесь необязателен; используйте `[locales]`, чтобы исключить путь для всех локалей.
* `transform` — переопределяет имена выходных файлов. Строка с подстановочным символом `*` переопределяет расширение (например, `*.[locale].json`). Объект с `match` и `replace` поддерживает группы захвата regex и заполнители локалей в разделе [заполнителе локали](#locale-placeholders).
* `transformationFormat` — выводит переведённые файлы в формате, отличном от исходного. Например, источники `pot` с `"transformationFormat": "PO"` создают файлы `.po`.
* `requiresReview` — делает переведённые файлы доступными только после ручной проверки. Принимает `true`/`false` или объект с glob-массивами `include` и `exclude`, где `exclude` имеет приоритет.
* `output` — только для файлов `gt`, локальный путь сохранения с заполнителем `[locale]`, например `public/i18n/[locale].json`. Обязателен, когда workflow Locadex использует **Preserve local edits** без публикации на CDN верхнего уровня; см. [Сохранение локальных правок в Locadex](#locadex-requirements).
* `parsingFlags` — только для файлов `gt`, флаги, управляющие разбором встроенного контента. См. [`autoderive`](/docs/cli/guides/using-autoderive) и [автоматическая инъекция JSX](/docs/cli/guides/using-auto-jsx).

```json title="gt.config.json"
{
  "files": {
    "gt": {
      "output": "public/i18n/[locale].json"
    },
    "mdx": {
      "include": ["content/docs/[locale]/**/*.mdx"],
      "transform": "*.[locale].mdx"
    },
    "json": {
      "include": ["resources/[locale]/**/*.json"],
      "exclude": ["resources/[locale]/exclude/**/*.json"]
    }
  }
}
```

### Заполнители локали [#locale-placeholders]

Значение `replace` объекта `transform` поддерживает заполнители `{...}`, которые подставляются из свойств целевой локали. Нераспознанные имена сохраняются в output как буквальный текст.

| Заполнитель          | Описание                                                                                   | Пример для `pt-BR`     |
| -------------------- | ------------------------------------------------------------------------------------------ | ---------------------- |
| `{locale}`           | Локаль в точности в том виде, как указано в [`locales`](#locales). `{localeCode}` — алиас. | `pt-BR`                |
| `{localeName}`       | Английское название локали, включая регион.                                                | `Brazilian Portuguese` |
| `{localeNativeName}` | Название локали на её языке, включая регион.                                               | `português (Brasil)`   |
| `{languageCode}`     | Подтег языка.                                                                              | `pt`                   |
| `{regionCode}`       | Подтег региона.                                                                            | `BR`                   |
| `{scriptCode}`       | Подтег системы письма.                                                                     | `Latn`                 |
| `{minimizedCode}`    | Самая короткая однозначная форма тега.                                                     | `pt`                   |
| `{maximizedCode}`    | Полностью развёрнутый тег, включая систему письма.                                         | `pt-Latn-BR`           |
| `{emoji}`            | Эмодзи флага, соответствующий локали.                                                      | 🇧🇷                   |

Также принимаются по имени остальные поля [`LocaleProperties`](/docs/platform/core/reference/types/locale-properties), включая `languageName`, `nativeLanguageName`, `regionName`, `nativeRegionName`, `scriptName`, `nativeScriptName`, `nameWithRegionCode`, `nativeNameWithRegionCode`, `maximizedName`, `nativeMaximizedName`, `minimizedName` и `nativeMinimizedName`.

`{locale}` использует написание из вашей конфигурации, а не каноническую форму BCP-47, поэтому для локали, настроенной как `fr-ca`, будет получено `fr-ca`, а не `fr-CA`. Это соответствует заполнителю `[locale]` в `include`, `exclude` и `output`, поэтому пути к файлам и локализованные URL совпадают. Если вместо этого нужен нормализованный тег, используйте `{minimizedCode}`, `{maximizedCode}` или `{regionCode}`.

Единственное исключение — [`androidStrings`](/docs/cli/reference/formats/android-strings-files), где оба заполнителя разворачиваются в квалификатор каталога ресурсов Android: `fr-CA` превращается в `fr-rCA`, поскольку Android завершает build с ошибкой, если не может разобрать имя каталога `values-*`.

```json title="gt.config.json"
{
  "files": {
    "json": {
      "include": ["locales/[locale]/**/*.json"],
      "transform": {
        "match": "locales/(.*)/(.*)\\.json",
        "replace": "locales/{locale}/$2.{languageCode}.json"
      }
    }
  }
}
```

## `fonts` [#fonts]

**Тип** `object` · **Необязательно** · **По умолчанию** —

Файлы шрифтов, которые нужно загрузить до запуска задач перевода. Используйте glob-шаблоны `include` и необязательный `exclude`, пути в которых разрешаются относительно корня проекта. Указывайте файлы `.ttf` и `.otf`; CLI считывает их как двоичные данные и загружает в качестве постоянных ресурсов Organization для обработки макета Lottie.

| Свойство  | Описание                                | Тип        | Необязательно | По умолчанию |
| --------- | --------------------------------------- | ---------- | ------------- | ------------ |
| `include` | Glob-шаблоны для загрузки шрифтов.      | `string[]` | Нет           | —            |
| `exclude` | Glob-шаблоны для исключения совпадений. | `string[]` | Да            | `[]`         |

```json title="gt.config.json"
{
  "fonts": {
    "include": ["public/fonts/**/*.{ttf,otf}"],
    "exclude": ["public/fonts/legacy/**"]
  }
}
```

CLI синхронизирует соответствующие шрифты перед выполнением [`gt stage`](/docs/cli/reference/commands/stage), [`gt upload`](/docs/cli/reference/commands/upload), [`gt enqueue`](/docs/cli/reference/commands/enqueue) и [`gt translate`](/docs/cli/reference/commands/translate), если эти команды ставят новую работу в очередь. Если включён параметр `stageTranslations`, [`gt translate`](/docs/cli/reference/commands/translate) только скачивает подготовленную версию и не синхронизирует шрифты. При сбое синхронизации шрифтов выводится предупреждение, но перевод не прерывается; обработка Lottie продолжается с резервными шрифтами. Сведения о проверке и хранении шрифтов см. в разделе [Загрузка ресурсов проекта](/docs/platform/openapi/reference/project/upload-assets).

## `publish` [#publish]

**Тип** `boolean` · **Необязательный** · **По умолчанию** `false`

Если указано `true`, переведённые файлы публикуются в CDN General Translation после [`translate`](/docs/cli/reference/commands/translate), [`upload`](/docs/cli/reference/commands/upload) или [`save-local`](/docs/cli/reference/commands/save-local). Переводы Lottie по-прежнему доступны только через API и скачивания CLI; настройка `publish` не делает файлы `.lottie` доступными из CDN. См. раздел [публикация в CDN](#cdn-publishing), чтобы управлять этим для отдельных файлов и команд.

```json title="gt.config.json"
{
  "publish": true
}
```

## `stageTranslations` [#stage]

**Тип** `boolean` · **Необязательно** · **По умолчанию** `false`

Если `true`, CLI скачивает только версии, отправленные с помощью [`gt stage`](/docs/cli/reference/commands/stage). CLI автоматически устанавливает это значение при первом запуске [`gt stage`](/docs/cli/reference/commands/stage). Используйте рабочий процесс с подготовкой версий для ручной проверки и асинхронных форматов, таких как [Lottie](/docs/cli/reference/formats/lottie-files); настройки проверки проекта определяют, требуется ли также утверждение готовых переводов.

## `omitConfigIds` [#omit-config-ids]

**Тип** `boolean` · **Необязательно** · **По умолчанию** `false`

Если задано значение `true`, команды перевода не сохраняют сгенерированные поля `_versionId` и `_branchId` в `gt.config.json`. При успешном выполнении staging существующие значения удаляются. Это снижает число конфликтов в файле конфигурации, когда в разных ветках создаются разные версии перевода.

Команда [`gt git setup`](/docs/cli/reference/commands/git-setup) может включить этот параметр и настроить драйверы структурного слияния для `gt-lock.json` и сгенерированных файлов GTJSON.

```json title="gt.config.json"
{
  "omitConfigIds": true
}
```

<Callout type="warn">
  Если включена публикация в CDN, то без идентификаторов в конфигурации удалённый кэш и компоненты, получающие данные из CDN, могут загружать последние доступные переводы вместо закреплённой версии. Если включены оба параметра, CLI выводит предупреждение.
</Callout>

### История версий

| Версия    | Изменения                                                                                                      |
| --------- | -------------------------------------------------------------------------------------------------------------- |
| `2.14.53` | Добавлены параметр `omitConfigIds` и рабочий процесс [`gt git setup`](/docs/cli/reference/commands/git-setup). |

## `requiresReview` [#requires-review]

**Тип** `boolean` · **Необязательно** · **По умолчанию** `false`

Значение по умолчанию для проверки на уровне проекта: если `true`, переведённые артефакты требуют утверждения, прежде чем клиент сможет их использовать. Это должно быть значение `boolean` — для переопределений по glob-шаблонам используйте ключ [`files.<type>.requiresReview`](#files) для отдельных файлов (он принимает `boolean` или globs `{ include, exclude }`). Политика для отдельного файла имеет приоритет; файлы, не соответствующие ни glob-шаблону `include`, ни `exclude`, используют это значение верхнего уровня по умолчанию.

```json title="gt.config.json"
{
  "requiresReview": true
}
```

## `src` [#src]

**Тип** `string[]` · **Необязательно** · **По умолчанию** glob-шаблоны исходных файлов, зависящие от фреймворка

Массив glob-шаблонов для исходных файлов, которые сканируются на наличие встроенного контента. В проектах семейства React по умолчанию сканируются файлы JavaScript и TypeScript в каталогах `src`, `app`, `pages` и `components`. В проектах Vue дополнительно сканируются файлы `*.vue` в корне, а также файлы JavaScript, TypeScript и Vue в стандартных каталогах Vue и Nuxt, таких как `composables`, `layouts`, `plugins`, `server`, `stores`, `utils` и `views`.

```json title="gt.config.json"
{
  "src": [
    "src/**/*.{js,jsx,ts,tsx}",
    "app/**/*.{js,jsx,ts,tsx}",
    "pages/**/*.{js,jsx,ts,tsx}",
    "components/**/*.{js,jsx,ts,tsx}"
  ]
}
```

## `dictionary` [#dictionary]

**Тип** `string` · **Необязательный** · **По умолчанию** —

Относительный путь к файлу словаря. Если параметр не указан, CLI ищет `dictionary.[json|ts|js]` в `./src` и `./`.

```json title="gt.config.json"
{
  "dictionary": "./dictionary.json"
}
```

## `branchOptions` [#branch-options]

**Тип** `object` · **Необязательно** · **По умолчанию** —

Настраивает отслеживание переводов по веткам. См. [Отслеживание переводов по веткам](/docs/cli/guides/branching). Флаги CLI имеют приоритет над этими значениями.

| Свойство             | Описание                                                       | Тип       | Необязательно | По умолчанию |
| -------------------- | -------------------------------------------------------------- | --------- | ------------- | ------------ |
| `enabled`            | Включает ветвление для проекта.                                | `boolean` | Да            | `false`      |
| `currentBranch`      | Переопределяет обнаруженное имя ветки.                         | `string`  | Да            | —            |
| `autoDetectBranches` | Определяет связи между входящими и текущими ветками.           | `boolean` | Да            | `true`       |
| `remoteName`         | Удалённый репозиторий Git, используемый для определения ветки. | `string`  | Да            | `origin`     |

```json title="gt.config.json"
{
  "branchOptions": {
    "enabled": true,
    "currentBranch": "my-feature-branch",
    "autoDetectBranches": true,
    "remoteName": "origin"
  }
}
```

## `customMapping` [#custom-mapping]

**Тип** `object` · **Необязательно** · **По умолчанию** —

Задает для локали алиас с другим кодом и при необходимости переопределяет её свойства. Например, задайте алиас `cn` для официального кода `zh`.

При использовании алиаса указывайте в `defaultLocale` и в элементах `locales` имя алиаса (`cn`), а не каноническое имя (`zh`).

```json title="gt.config.json"
{
  "defaultLocale": "cn",
  "locales": ["cn", "fr", "en"],
  "customMapping": {
    "cn": {
      "code": "zh",
      "name": "Mandarin"
    }
  }
}
```

## `options.docsUrlPattern` [#docs-url-pattern]

**Тип** `string | string[]` · **Необязательно** · **По умолчанию** `/[locale]`

Определяет, в какое место CLI вставляет локаль при локализации URL документации. Каждый паттерн должен содержать `[locale]`, например `/docs/[locale]`.

Используйте массив, если один сайт отдаёт документацию по нескольким префиксам URL. CLI сопоставляет каждый URL с частью каждого паттерна до `[locale]` и выбирает самый длинный совпавший префикс.

```json title="gt.config.json"
{
  "options": {
    "docsUrlPattern": ["/docs/[locale]", "/ai/docs/[locale]"],
    "experimentalLocalizeStaticUrls": true
  }
}
```

С такой конфигурацией для испанского языка `/docs/guide` превращается в `/docs/es/guide`, а `/ai/docs/guide` — в `/ai/docs/es/guide`. URL, не попадающий ни под один из этих префиксов, остаётся без изменений.

Значение по умолчанию `/[locale]` используется при локализации статических URL. Для [`options.mintlify.localizeRedirects`](/docs/integrations/mintlify/reference/config#localized-redirects) этот key нужно указать явно: если он не задан, CLI выводит предупреждение и не добавляет локализованные перенаправления.

### История версий

| Версия   | Изменения                                                                              |
| -------- | -------------------------------------------------------------------------------------- |
| `2.26.3` | Добавлена поддержка массивов паттернов URL и сопоставления по самому длинному префиксу. |

## `options.experimentalLocalizeStaticUrls` [#localize-static-urls]

**Тип** `boolean | { skipUntranslatedPages?: boolean; attributes?: string[] }` · **Необязательно** · **По умолчанию** `false`

Локализует статические URL в переведённых Markdown- и MDX-файлах. Задайте этот параметр в объекте `options` верхнего уровня или передайте флаг `--experimental-localize-static-urls` команде [`gt translate`](/docs/cli/reference/commands/translate#experimental) для однократного запуска.

Чтобы управлять тем, куда вставляются коды локалей, используйте [`options.docsUrlPattern`](#docs-url-pattern).

* `true` добавляет целевую локаль ко всем подходящим статическим URL.
* `{ "skipUntranslatedPages": true }` оставляет ссылку на исходной локали, если исходная страница существует, а переведённой нет. Ссылки на сгенерированные страницы, у которых нет исходного Markdown- или MDX-файла (например, страницы справочника OpenAPI), по-прежнему локализуются.
* `attributes` задаёт дополнительные имена JSX-атрибутов или glob-паттерны, URL в которых нужно локализовать. CLI всегда локализует `href`. Паттерны применяются к строковым значениям, заданным напрямую, и к статическим строковым литералам в значениях-выражениях, включая JSX, вложенный в выражения.

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

Избегайте паттернов, под которые попадают атрибуты ресурсов, например `src`. У общих ресурсов обычно нет копий с префиксом локали, поэтому их перезапись может привести к неработающим URL.

```json title="gt.config.json"
{
  "options": {
    "experimentalLocalizeStaticUrls": {
      "skipUntranslatedPages": true,
      "attributes": ["href*"]
    }
  }
}
```

### История версий [#localize-static-urls-version-history]

| Версия   | Изменения                                                              |
| -------- | ---------------------------------------------------------------------- |
| `2.25.0` | Добавлена возможность настраивать имена JSX-атрибутов и glob-шаблоны.  |
| `2.21.5` | Добавлена возможность задавать `skipUntranslatedPages` в виде объекта. |

## `options.saveLocal` [#save-local]

**Type** `boolean` · **Optional** · **Default** `false`

Обнаруживает правки в ранее скачанных локальных файлах перевода и отправляет их diff&#39;ы до того, как [`gt translate`](/docs/cli/reference/commands/translate) или [`gt stage`](/docs/cli/reference/commands/stage) поставят в очередь новые задачи. Задавайте этот параметр в корневом объекте `options`. Флаги `--save-local` и `--no-save-local` переопределяют эту настройку для одного запуска.

```json title="gt.config.json"
{
  "options": {
    "saveLocal": true
  }
}
```

### История версий

| Версия   | Изменения                                                                                                                        |
| -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `2.20.3` | Локальные правки стали опциональными: задайте этому ключу значение `true` или передайте `--save-local`, чтобы включить этот шаг. |

## Публикация в CDN [#cdn-publishing]

По умолчанию CLI не публикует в CDN. Когда CDN включён в настройках проекта, вы можете управлять публикацией глобально, для отдельных файлов или для отдельных команд.

* **Глобально:** установите [`publish`](#publish) верхнего уровня в `true` или передайте `--publish` в [`translate`](/docs/cli/reference/commands/translate), [`upload`](/docs/cli/reference/commands/upload) или [`save-local`](/docs/cli/reference/commands/save-local).
* **Только для файлов GT:** установите `publish: true` в `files.gt`.
* **Для каждого файла:** в массиве `include` замените glob-строку на объект с `pattern` и `publish`, чтобы явно включать или исключать совпавшие файлы.

```json title="gt.config.json"
{
  "files": {
    "json": {
      "include": [
        { "pattern": "locales/[locale]/*.json", "publish": true },
        { "pattern": "locales/[locale]/internal/**/*.json", "publish": false }
      ]
    }
  }
}
```

Для любого файла CLI определяет публикацию в следующем порядке: явное исключение через `"publish": false`, затем явное включение через `"publish": true`, затем глобальная настройка `publish`. Если настройка публикации отсутствует на всех уровнях, шаг публикации пропускается.

## Locadex preserve local edits [#locadex-requirements]

Если в автоматизации Locadex включена опция **Preserve local edits**, задайте либо `"publish": true` на верхнем уровне, либо `files.gt.output`. Locadex проверяет это перед запуском перевода.

```json title="gt.config.json"
{
  "files": {
    "gt": {
      "output": "public/i18n/[locale].json"
    }
  }
}
```

Настройки отдельных файлов и `files.gt.publish` эту проверку не проходят. Если публикация на CDN не включена на верхнем уровне, параметр `files.gt.output` указывает workflow, где хранятся локальные GTJSON-переводы, чтобы тот мог сохранить правки.

## Пример конфигурации [#example]

```json title="gt.config.json"
{
  "$schema": "https://assets.gtx.dev/config-schema.json",
  "defaultLocale": "en",
  "locales": ["fr", "es"],
  "files": {
    "gt": {
      "output": "public/i18n/[locale].json"
    },
    "mdx": {
      "include": ["content/docs/[locale]/**/*.mdx"],
      "transform": "*.[locale].mdx"
    },
    "json": {
      "include": ["resources/[locale]/**/*.json"],
      "exclude": ["resources/[locale]/exclude/**/*.json"]
    }
  }
}
```

Один запуск [`gt translate`](/docs/cli/reference/commands/translate) с этой конфигурацией переводит MDX-файлы в каталоге `content/docs/en` (с сохранением в `content/docs/fr` и `content/docs/es` с расширениями `.fr.mdx` и `.es.mdx`), JSON-файлы в каталоге `resources/en` (кроме `resources/en/exclude`), а также все встроенные компоненты [`<T>`](/docs/react/reference/components/t) и записи словаря. Переводы GT сохраняются в `public/i18n/fr.json` и `public/i18n/es.json`.

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
