# gt: General Translation CLI tool: .xcstrings
URL: https://generaltranslation.com/ru/docs/cli/reference/formats/xcstrings-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Переводите Apple String Catalogs с помощью General Translation CLI. Справочник по API для формата файлов .xcstrings.

CLI переводит файлы `.xcstrings`, в которых исходный контент и все локали хранятся в одном String Catalog. Поддержка доступна начиная с версии `gt` 2.21.0.

## Обзор [#overview]

| Тема                              | Описание                                                                                     |
| --------------------------------- | -------------------------------------------------------------------------------------------- |
| [Конфигурация](#config)           | Выберите каталоги и храните все локали в одном файле.                                        |
| [Как это работает](#how-it-works) | Разбиение исходного контента при выгрузке и объединение переведённых локалей при скачивании. |
| [Локальные правки](#local-edits)  | Синхронизация правок без того, чтобы другие локали каталога считались изменениями.           |
| [Ошибки](#errors)                 | Выявление некорректных каталогов и неподдерживаемых настроек пути.                           |

## Конфигурация [#config]

Добавьте запись `xcstrings` в разделе `files` с массивом `include`, который напрямую указывает на каждый каталог.

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "ja"],
  "files": {
    "xcstrings": {
      "include": ["Resources/Localizable.xcstrings"]
    }
  }
}
```

String Catalog хранит все локали в одном файле и обновляется на месте. Его шаблоны `include` не должны содержать `[locale]`, а конфигурация `xcstrings` не принимает `transform`.

Значение `sourceLanguage` каталога должно разрешаться в ту же каноническую локаль, что и `defaultLocale`. Например, каталог с `"sourceLanguage": "en"` может использовать `"defaultLocale": "en"`, но не `"defaultLocale": "fr"`.

## Как это работает [#how-it-works]

При выгрузке CLI читает каталог и отправляет в API срез, содержащий только исходный контент. Каждая запись сохраняет локализацию на исходном языке, если она есть; записи, в которых в качестве исходного текста используется сам ключ, остаются в срезе без поля `localizations`. Существующие целевые локали не выгружаются как исходный контент.

При скачивании CLI объединяет каждую целевую локаль обратно с каталогом на диске. Для совпадающих записей изменяется только локализация этой локали. Остальные локали, комментарии, состояния извлечения, подстановки, вариации и нераспознанные поля остаются на месте.

Если скачанный перевод содержит ключ, которого больше нет в локальном каталоге, CLI пропускает его и выводит предупреждение. Скачанный файл сериализуется в JSON с отступом в два пробела и завершающим переводом строки.

## Локальные правки [#local-edits]

Учёт скачиваний ведётся отдельно по каждой локали, даже если все локали используют один файл. Благодаря этому неизменённая целевая локаль не будет отправлена как локальная правка после того, как в каталог влита другая локаль.

Чтобы отправить отредактированные целевые локализации, используйте [`gt save-local`](/docs/cli/reference/commands/save-local), [`gt translate --save-local`](/docs/cli/reference/commands/translate) или [`options.saveLocal: true`](/docs/cli/reference/config#save-local). Синхронизация локальных правок включается явно.

Панель управления также открывает переводы `.xcstrings` в редактируемом представлении Raw. Сохранённая правка обновляет в каталоге только выбранную целевую локаль.

## Ошибки [#errors]

* Некорректный JSON, отсутствующий или пустой `sourceLanguage`, а также поле `strings`, не являющееся объектом, приводят к тому, что CLI пропускает каталог и сообщает о проблеме валидации.
* Если `sourceLanguage` не совпадает с `defaultLocale`, запуск прерывается до выгрузки файлов.
* Шаблон `include`, содержащий `[locale]`, либо настройка `xcstrings.transform` прерывают запуск, поскольку переведённые локали должны объединяться с исходным каталогом.
* Зарезервированный ключ `__proto__` отклоняется в картах строк и локализаций. Ключи с именами `constructor` и `prototype` поддерживаются.

## Sitemap

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