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

CLI переводит файлы `.stringsdict` — XML property list, в которых хранятся правила множественного числа приложения. У каждой локали есть свой файл, расположенный рядом с таблицами `.strings` в каталоге `<locale>.lproj`. При переводе сохраняются структура plist, ключи формата и спецификаторы формата, а формы множественного числа перестраиваются под каждую целевую локаль.

*Примечание: `.stringsdict` — часть устаревшей (legacy) схемы локализации Apple, используемая вместе с [`.strings`](/docs/cli/reference/formats/dot-strings-files). Миграция на String Catalog в Xcode объединяет оба файла в единый [каталог `.xcstrings`](/docs/cli/reference/formats/xcstrings-files) и удаляет их, поэтому в проекте применяется либо одна схема, либо другая.*

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

Добавьте запись `dotStringsdict` в раздел `files` с массивом `include`, содержащим glob-паттерны. Поместите placeholder `[locale]` в имя каталога `.lproj`, чтобы CLI мог найти исходный файл и сохранить переводы по нужному пути.

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["pl", "ar", "zh"],
  "files": {
    "dotStringsdict": {
      "include": ["Resources/[locale].lproj/Localizable.stringsdict"]
    }
  }
}
```

При такой конфигурации CLI читает `Resources/en.lproj/Localizable.stringsdict` и записывает переведённый файл в `Resources/pl.lproj/`, `Resources/ar.lproj/` и `Resources/zh.lproj/`. Полный список ключей файлов см. в [справочнике по конфигурации](/docs/cli/reference/config#files).

Ключ `dotStringsdict` требует `gt` версии 2.18.1 или новее.

## Кодировка файла [#encoding]

При чтении файла `.stringsdict` CLI распознаёт метки порядка байтов UTF-8, UTF-16 и UTF-32. Декодированный XML отправляется в API, после чего каждый перевод записывается в исходной кодировке исходного файла. Файл без метки порядка байтов считается файлом в кодировке UTF-8.

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

<Callout type="info">
  **Изменение в v2.20.0:** теперь CLI сохраняет исходную кодировку, а не перезаписывает файл UTF-16 в UTF-8 и не передаёт закодированные байты в XML-парсер.
</Callout>

## Поведение вывода [#output]

CLI сохраняет символы возврата каретки в ключах и значениях property-list, используя символьные ссылки XML.

## Перевод вместе с таблицами .strings [#pairing]

Файл `.stringsdict` содержит только те ключи, которым нужны правила множественного числа; весь остальной текст локали остаётся в таблицах `.strings`. Настройте оба ключа, чтобы за один запуск обрабатывался весь каталог `.lproj`:

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["pl", "ar", "zh"],
  "files": {
    "dotStrings": {
      "include": ["Resources/[locale].lproj/*.strings"]
    },
    "dotStringsdict": {
      "include": ["Resources/[locale].lproj/*.stringsdict"]
    }
  }
}
```

## Категории множественного числа [#plurals]

Переведённый файл содержит те категории множественного числа, которые реально используются в целевом языке, и этот набор редко совпадает с исходным. В английском выбор идёт между `one` и `other`, тогда как в польском для целочисленного значения используются три формы, в арабском — шесть, а в китайском — одна. CLI перестраивает каждую переменную формата по правилам CLDR целевого языка, а не копирует категории из исходного файла:

* Категории, которые используются в целевом языке, присутствуют всегда, поэтому в польском переводе появляются формы, которых в английском не было.
* Категории, которые в целевом языке никогда не выбираются, отбрасываются, поэтому китайский перевод сводится к единственной форме `other`.
* Явно заданный `zero` в исходнике сохраняется даже для языка, чьи правила CLDR такой категории не предусматривают, поскольку Foundation в любом случае отображает её при значении 0.

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

## Sitemap

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