# Русский (Codex) для Disco Elysium — macOS

Это отдельный языковой слот `RussianBlind`, который в меню игры отображается
как **«Русский (Codex)»**. Официальный русский язык остаётся на месте и не
изменяется.

Текущая сборка — первый работающий прототип будущей универсальной платформы
локализаций. Общая архитектура, единый формат языковых пакетов и границы
между установщиком, профилем игры и переводом описаны в
[`docs/LOCALIZATION_PLATFORM.md`](docs/LOCALIZATION_PLATFORM.md).

Для Codex и других агентов основные инструкции находятся в
[`AGENTS.md`](AGENTS.md).

Текущий профиль совместимости:

- файлы macOS-сборки, соответствующие Steam build `23980936`;
- магазин не имеет значения: та же структура и контрольные суммы подходят
  для Steam, GOG и других легальных копий;
- macOS: 14 или новее
- Apple Silicon

## Установка

1. Полностью закройте Disco Elysium.
2. Откройте приложение
   `Disco Elysium — Русский Codex Installer.app`.
3. Оставьте включённым флажок **«Русские названия навыков на карточках»**
   и нажмите **«УСТАНОВИТЬ»**.
4. Запустите игру и выберите **«Русский (Codex)»** в настройках языка.

Установщик ищет игру через реестр приложений macOS, обычные Steam-библиотеки
и типовые каталоги GOG. Если игра находится в нестандартном месте, можно
вручную указать `disco.app`. Магазин не проверяется: перед записью
проверяется фактическая совместимость игровых файлов.

## Что меняется

- в `resources.assets` добавляется одна запись в штатный реестр языков и
  минимальная шрифтовая колонка того же языка во встроенный английский
  источник; она не даёт игре забыть пользовательский язык при повторном
  обновлении источников локализации;
- устанавливается отдельный пакет `lockits/russianblind`;
- устанавливаются отдельные support bundle с внутренними именами
  `fonts/russianblind`, `images/russianblind` и
  `images_dyslexic/russianblind`;
- у основного и support bundle независимо переименованы оба поля идентичности
  Unity (`m_Name` и `m_AssetBundleName`) и CAB-узлы, поэтому они не конфликтуют
  со штатными пакетами, загруженными в том же процессе;
- экспортируемые шрифты, атласы и материалы также получили отдельные имена,
  адреса экспорта и ссылки в таблице шрифтов; поэтому Unity находит
  пользовательские объекты по новым именам и не подменяет их одноимёнными
  объектами официального русского пакета;
- в четырёх штатных файлах интерфейса для кода `ru-RU` добавляются
  точные копии технических правил раскладки `ru`: размеры шрифта,
  интервалы, поля и смещения; в `sharedassets0.assets` дополнительно
  копируются все 28 русских значений трёх глобальных профилей размера
  интерфейса; существующие правила не изменяются;
- в `resources.assets` добавляется отдельный пресет 24 названий навыков,
  составленный из нашего перевода, а в конфигураторе сцены `level2`
  код `ru-RU` связывается с этим пресетом; штатный русский пресет и его
  привязка не изменяются;
- таблица шрифтов и шрифтовые ресурсы основаны на технических ресурсах
  штатного русского языка, а графические ресурсы — на английском оригинале;
- support bundle создаются установщиком из проверенных файлов самой игры
  с помощью бинарных патчей; игровые шрифты и изображения в архив не входят;
- английские значения встроенной таблицы шрифтов не изменяются, а новая
  колонка точно совпадает с `FontsLockitRussianBlind`;
- если предыдущая версия оставила конфликтный числовой индекс `13`,
  установщик сохраняет копию `Settings.json` и заменяет только этот индекс
  на `0` — English; все остальные числовые языки сохраняются;
- исполняемые файлы, официальный русский перевод и сохранения не меняются.

Перед изменением `resources.assets` и четырёх файлов раскладки создаются
проверенные резервные копии:

`~/Library/Application Support/Disco Elysium Russian Codex/`

Исходный `Settings.json`, затронутый миграцией языка запуска, сохраняется
там же в `User Settings/Settings.before-language-index-migration.json`.

Кнопка **«Удалить перевод»** восстанавливает оригинальные файлы и удаляет
только файлы с известными контрольными суммами.

Названия на карточках можно откатить отдельно: полностью закройте игру,
снова откройте тот же установщик, снимите флажок
**«Русские названия навыков на карточках»** и нажмите **«УСТАНОВИТЬ»**.
Остальной перевод останется установленным, а 24 подписи вернутся к
английскому варианту. Чтобы включить их снова, повторите установку с
установленным флажком.

## Ограничения прототипа

- текущие бинарные патчи совместимы с набором файлов build `23980936`;
  отличающиеся Unity-файлы установщик пока не трогает, независимо от
  магазина;
- технический код языка обязан поддерживаться Unity/.NET `CultureInfo`;
  прежний частный код `ru-x-codex` приводил к зависанию при начале новой
  игры, поэтому текущая версия использует отдельный от официального `ru`
  стандартный код `ru-RU` и умеет безопасно обновить старую установку;
- игра хранит язык одновременно как имя I2 и как числовой индекс; старый
  индекс пользовательского слота `13` совпадает с Japanese в штатной логике.
  После неудачного запуска игра успевает заменить имя I2 на Japanese,
  поэтому установщик считает сам индекс `13` неоднозначным и назначает
  безопасный язык следующего запуска English (`0`);
- после обновления или проверки файлов магазином перевод может потребоваться
  установить заново;
- надписи, встроенные непосредственно в изображения, остаются английскими;
  динамические названия 24 навыков на сетке персонажа обрабатываются
  отдельным пресетом и к этому ограничению не относятся;
- GOG-копия устанавливается тем же архивом, если её игровые файлы совпадают
  с текущим профилем; отдельная отличающаяся GOG-сборка потребует нового
  профиля, но не нового установщика.

Перевод сделан Codex с английского текста без использования официальной
русской локализации как источника текста и без машинного перевода.
