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

CLI переводит файлы `.strings` — текстовые таблицы «ключ/значение», которые приложение загружает из отдельного каталога `<locale>.lproj` для каждой локали. При переводе сохраняются ключ каждой записи, экранирующие последовательности и спецификаторы формата, а комментарий над записью передаётся в систему перевода в качестве контекста.

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

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

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

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "ja", "ar"],
  "files": {
    "dotStrings": {
      "include": [
        "Resources/[locale].lproj/Localizable.strings",
        "Resources/[locale].lproj/InfoPlist.strings"
      ]
    }
  }
}
```

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

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

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

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

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

<Callout type="info">
  **Изменено в v2.20.0:** теперь CLI хеширует декодированный текст и сохраняет исходную кодировку. Существующие файлы `.strings` получают новые ID версий, поскольку в предыдущих выпусках хешировались байты base64 — поэтому после обновления они будут переведены ещё раз, даже если их текст не изменился.
</Callout>

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

Если в переведённой таблице нет записей, CLI записывает пустой словарь property-list вместо файла нулевого размера, чтобы Foundation мог его загрузить.

## Несколько таблиц на локаль [#tables]

В большинстве приложений на каждую локаль приходится больше одной таблицы, поэтому конфигурация, где указан только `Localizable.strings`, незаметно оставит остальные непереведёнными. Две наиболее распространённые таблицы:

* `Localizable.strings` — текст интерфейса, загружаемый через `NSLocalizedString`
* `InfoPlist.strings` — системные значения из `Info.plist`, например `CFBundleDisplayName` и описания назначения, которые отображаются в запросах разрешений

Перечислите каждую таблицу в `include` или охватите их все одним glob-шаблоном:

```json title="gt.config.json"
{
  "files": {
    "dotStrings": {
      "include": ["Resources/[locale].lproj/*.strings"]
    }
  }
}
```

## Множественное число [#plurals]

Запись `.strings` содержит одну строку на ключ и не может выразить формы множественного числа. Правила множественного числа Apple хранит в парном файле `.stringsdict` в том же каталоге `.lproj`, который задаётся отдельным ключом конфигурации. См. [`.stringsdict`](/docs/cli/reference/formats/dot-stringsdict-files), чтобы переводить их вместе с вашими таблицами.

## Sitemap

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