Jump to content

9 Screenshots

About This File

CK3 Mod Translator


by Heyvanushi


EN

CK3 Mod Translator is a tool for localizing mods for Paradox Interactive games, built to make translating faster and easier. It automatically finds localization files, replaces strings with ready-made translations from the vanilla game and your previous mod version, and machine-translates everything else.

It also handles any data stored in key "value" format inside .yml and .csv files.

9 supported languages. Officially supports all nine CK3 languages: English, French, German, Spanish, Russian, Korean, Simplified Chinese, Japanese and Polish. Because the program processes universal key "value" files and the language codes are fully configurable, it works just as well for Stellaris and other Paradox Interactive titles, not only for Crusader Kings III.

Features:

  • Target-language localization folder in one click. The l_english header automatically becomes l_russian (and so on for every language CK3 supports), files are renamed from _l_english.yml to _l_russian.yml and placed into the target-language subfolder. No more manual header edits or file renaming.
  • Vanilla localization scan. Program scans the CK3 vanilla localization folder. If a key with the same value is found, the mod string is replaced with the official in-game translation. Perfect when a modder copied a whole vanilla file, changed a few lines, and shipped the mod — no need to figure out which lines were modified.
  • Machine translation for everything else. All strings not found in vanilla or the previous version are translated online (MyMemory, Google, DeepL, XCL). Machine translation still needs a human pass, but a built-in editor with the original text shown above each field makes proofreading easy.
  • Escaping of game variables and parameters.[Concept(...)] calls, [second.GetTitledFirstName] commands, £icon£ icon references, #P/#N/#color_yellow color tags, and \n escapes are wrapped in markers and never damaged by the online translator. Game code is never rewritten or quoted.
  • Previous version localization. Point the program at the folder with your mod's previous translation. On mod updates it compares strings: already translated lines are reused, nothing is translated twice, and you never search manually for "what strings were added".
  • Safe reuse. Translations from cache, dictionary and previous version are validated: broken fragments, corrupted markers, or results that literally repeat the source are rejected and re-translated.
  • Smart text filtering. Strings with no real text (pure code, icons, references) are left untouched; long texts are pre-processed so that only meaningful words reach the translator. Results are checked against the source: damaged fragments, quoted game code and other artifacts are filtered out and sent for re-translation — this keeps the output clean and noticeably improves quality.


RU

CK3 Mod Translator — программа для помощи в локализации модов для игр от студии Paradox Interactive. Она упрощает перевод модов и делает его быстрым: автоматически находит файлы локализации, подставляет готовые переводы из ванильной версии игры и прошлой версии мода, а всё остальное переводит онлайн.

Также обрабатывает любые данные в формате ключ "значение" в файлах .yml и .csv.

Поддержка 9 языков. Официально поддерживаются все девять языков CK3: английский, французский, немецкий, испанский, русский, корейский, упрощённый китайский, японский и польский. Так как программа обрабатывает универсальные файлы ключ "значение", а коды языков настраиваются, она работает не только с Crusader Kings III, но и с Stellaris и другими играми Paradox Interactive.

Возможности:

  • Каталог локализации на выбранный язык в один клик. Заголовок l_english автоматически превращается в l_russian (и так для любого языка, поддерживаемого CK3), файлы _l_english.yml переименовываются в _l_russian.yml и раскладываются в подпапку целевого языка. Никаких ручных правок первой строки и переименований.
  • Скан ванильной локализации. Программа сканирует папку локализации ванильной CK3. Если ключ с таким же значением найден — строка мода заменяется на официальный перевод игры. Очень помогает, когда автор скопировал целый файл локализации, поменял пару строк и выложил модификацию: искать «что именно изменилось» не нужно.
  • Машинный перевод остального. Строки, не найденные в ванили и прошлой версии, переводятся онлайн-переводчиками (MyMemory, Google, DeepL, XCL). Машинный перевод всё же требует ручной вычитки, но встроенный редактор с оригиналом над каждым полем делает это просто.
  • Экранирование переменных и параметров игры. Концепты [Concept(...)], команды [second.GetTitledFirstName], ссылки на иконки £icon£, цветовые теги #P/#N/#color_yellow и переносы \n защищаются маркерами и не искажаются онлайн-переводчиком. Код игры никогда не переписывается и не берётся в кавычки.
  • Локализация прошлой версии. Укажите папку с переводом предыдущей версии мода. При обновлении программа сверяет строки: уже переведённые переиспользуются, второй раз ничего не переводится, а «что добавилось» искать вручную не нужно.
  • Безопасное переиспользование. Переводы из кэша, словаря и прошлой версии проверяются: повреждённые фрагменты, испорченные маркеры и «переводы», дословно повторяющие исходник, отбрасываются и переводятся заново.
  • Умная фильтрация текста. Строки без настоящего текста (только код, иконки, ссылки) не трогаются; текст предварительно обрабатывается так, что переводчику уходят только значимые слова. Результат сверяется с исходником: повреждённые фрагменты, кавычки вокруг игрового кода и прочие артефакты отфильтровываются и отправляются на повторный перевод — это заметно повышает качество результата.


Автор: Heyvanushi

Edited by Heyvanushi


What's New in Version 09/12/26 11:13 AM

Released

Paradox Mod Translation — журнал обновлений

 

1.0.6

Что нового:

  • Вкладка «Краш-логи» (в левом меню, для CK3, CK2 и Stellaris). Программа читает логи игры (error.log, game.log, debug.log) и журнал Windows и одним нажатием показывает:
    • вердикт — есть ли серьёзные проблемы в целом;
    • краши из журнала Windows — код исключения, адрес в памяти и модуль (например, баг защиты буфера в ck3.exe);
    • паттерны ошибок — что за ошибки повторяются и сколько раз (нет веры у персонажа, ошибки скриптов, битые ссылки и т.п.);
    • моды-виновники — какие моды из вашего активного набора содержат упомянутые в ошибках файлы и идентификаторы;
    • сессии игры — когда игра работала и сколько ошибок накопила;
    • топ проблем — самые частые сообщения с примерами;
    • файлы, чаще всего упоминаемые в ошибках — чтобы сразу знать, где копать.

    Анализ запускается кнопкой «Анализировать» и автоматически при открытии вкладки.
  • Карточка «Что означают эти ошибки и как их исправить». По каждому найденному паттерну и краху — понятное объяснение («Что это значит») и конкретный план («Как исправить»), включая коды ошибок Windows (0xc0000409, 0xc0000005, 0xc0000374 и др.).
  • Кнопка «Открыть в папке» для лог-файлов, файлов модов-виновников и файлов, указанных в «Как исправить» — файл открывается в проводнике Windows.

Исправлено:

  • Кнопка «Добавить мод в плейсет» снова показывает моды только выбранной игры (раньше при выборе Stellaris могли попасться моды CK3).
  • В списки добавления больше нельзя случайно добавить мод, который уже в плейсете или уже добавлен из Steam Workshop.
  • Окно «Добавить мод в плейсет» больше не «уезжает» за край экрана: при большом списке модов кнопка «Закрыть» оставалась невидимой и окно нельзя было закрыть. Теперь высота окна ограничена, список прокручивается внутри, а закрыть можно кнопкой, клавишей Esc или кликом по тёмному фону.
  • Записи словаря переводчика теперь реально применяются на всех языках, включая английский → корейский:
    • исправлена гонка маркеров при параллельном переводе — записи словаря больше не «теряются» в большинстве строк;
    • фразы из двух слов (например, «Lord Ragnarr») проверяются сначала целиком, а при отсутствии в словаре — по словам отдельно;
    • слова ищутся в любом регистре: запись «castle» находит «Castle» и наоборот.
  • Чтобы новые записи словаря применились к уже переведённым строкам: в настройках нажмите «Очистить кэш» и переведите файл заново — иначе строки возьмутся из старого кэша без учёта словаря.

1.0.5

Spoiler

Исправлено:

  • «Битые» переводы от онлайн-переводчиков. Если переводчик вернул мусор вместо текста — полноширинные/псевдографические символы
    U+FF01..FFEE
    , символ замены
    U+FFFD
    от повреждённого UTF-8 — строка определяется как бракованная и автоматически отправляется на повторный перевод. Повторная попытка выполняется тем же сегментом один раз; если и она возвращает мусор — берётся первый результат.
  • Числовые обозначения в русском переводе. Английская аббревиатура
    No2
    стала №2 (
    no thicker than a No2. pencil
    → «не толще карандаша №2»). Нормализация
    No
    /
    Nº
    + число →
    №
    действует на все переводы в русский после восстановления маркеров.
  • Лишние латинские буквы перед
    §
    -тегами форматирования. Переводчики иногда оставляли первую букву английского слова сразу после цветового тега (
    §LDВо время…
    ,
    §RRРыжие…
    ,
    §LM Представители…
    ). Такие буквы теперь автоматически удаляются:
    §LВо время…
    ,
    §RРыжие…
    ,
    §LПредставители…
    . Латиница внутри реальных слов (
    §WPop
    ,
    §Yx6
    ,
    §HVoid
    ) не затрагивается.
  • Заглавная буква в названиях. Значения-названия, начинающиеся со строчной буквы (
    рутина шлюхи
    ,
    директриса
    ,
    шипованные пенисы
    ), теперь приводятся к заглавной, с пропуском
    §
    -тегов и ведущих пробелов. Применяется только к первой букве строки, остальной текст не меняется.

Новое:

  • Поддержка нескольких игр Paradox: Crusader Kings III, Crusader Kings II и Stellaris. Формат локализации (YML-подобный / CSV-колонки), поиск ванильных папок и пути БД лаунчера привязаны к выбранной игре.
  • Выбор игры перенесён вниз левой боковой панели (и продублирован в настройках). При переключении игра сразу подтягивает свою папку ванильной локализации; если папка не найдена автоматически — открывается ручной выбор.
  • Папки ванильной локализации и «прошлой версии» теперь хранятся по игре (
    vanillaFolder_<игра>
    /
    previousTranslationFolder_<игра>
    ) и переключаются вслед за выбранной игрой.
  • Сканирование модов Steam Workshop: в списке доступных модов панели «Порядок загрузки» появляются моды из
    steamapps\workshop\content\<AppId>
    выбранной игры, их можно добавлять в плейсет и они участвуют в анализе совместимости.
  • Резервные копии БД лаунчера именуются по игре:
    launcher-v2.sqlite.bak-<игра>-<дата>-<время>
    .
  • Сортировка порядка загрузки: рекомендуемый порядок (топологическая сортировка по зависимостям — зависимость всегда выше зависимого) с показом изменений по модам. Кнопка «Применить рекомендуемый» и ручная перестановка стрелками с записью новых позиций в
    launcher-v2.sqlite
    .
  • Безопасная запись порядка: разрешена только при закрытых игре/лаунчере (проверка отсутствия
    -wal
    /
    -journal
    ); перед записью автоматически создаётся резервная копия. Если лаунчер/игра запущены — предупреждение и блок записи.

Технические изменения:

  • src/games/game-profiles.js
    — реестр игр (папки локализации/документов, парсеры, исполняемые файлы, workshopAppId).
  • src/parser/ck2-parser.js
    — CSV-парсер локализации CK2 (детект заголовка KEY;English;…;Russian, кавычки, запись только нужной колонки).
  • src/loc/loc-file.js
    ,
    src/loc/game-io.js
    — унифицированный ввод/вывод локализации для всех игр.
  • src/modcheck/workshop-mods.js
    — поиск модов Steam Workshop по библиотекам Steam.
  • src/modcheck/launcher-db.js
    — имя бэкапа с gameId; поддержка source='workshop' при регистрации мода; атомарная запись новых позиций в
    launcher-v2.sqlite
    со страховкой от незакрытой сессии.
  • main.js
    — IPC apply-game-change; эффективные папки ванили/прошлой версии по игре; слияние модов Workshop в loadorder-available; IPC loadorder-apply.
  • public/renderer.js
    ,
    public/index.html
    — селектор игры в сайдбаре, переключение настроек по игре, блок «Steam Workshop» в списке добавления модов, применение рекомендуемого порядка и ручная перестановка стрелками.
  • src/i18n/i18n.js
    — ключи gameSwitched, loWorkshop (en/ru).
  • src/translator/translation-safety.js
    — детектор isGarbled(): полноширинные символы
    \uFF01-\uFFEE
    и replacement character
    \uFFFD
    .
  • main.js
    — пост-обработка результата в translateBatchClean: детекция мусора с повторным запросом; normalizeTargetNumbers (
    No2
    →
    №2
    ); cleanStrayTagLetters (лишние латинские буквы перед
    §
    ); capitalizeFirstLetter (заглавная в названиях).
  • src/modcheck/analysis.js
    — топологическая сортировка рекомендаций порядка загрузки.
  • preload.js
    — applyLoadOrder.


## 1.0.4

Spoiler
- улучшена фильтрация для повышение качество перевода 
Исправлена потеря ключей с комментарием после закрывающей кавычки (`"value" # attitude`). Парсер требовал кавычку в конце строки и молча пропускал строки с хвостовым комментарием — так при переводе выпадали целые блоки / `*_title_1` / `*_option_1`). Теперь комментарий после кавычки корректно отсекается, значение сохраняется полностью.
- Испорченные CK3-цвета в переводе: `#P amorous#!` переводилось как `#П влюбчивый#!` — переводчик транслитерировал букву цветового тега (`P` → `П`, `N` → `Н`), и игра не могла распознать цвет. Теги форматирования (`#P`, `#N`, `#!`, `#color_yellow` и т.п.) защищены: парсер выделяет их в отдельные защищённые сегменты, а сборщик батча упаковывает их в маркеры `XQX{n}XQX` — переводчик их не трогает
 
## 1.0.3
Spoiler
### Исправлено
- Сломанные маркеры шаблонных фрагментов. Маркер `QY{n}QY` переводчик Google (dict-chrome-ex) превращал в `БГ{n}ДГ` — в перевод попадало мусорное `БГ0ДГ: БГ1БГ (БГ2БГ)` вместо фрагментов `[THIS.Char...]`. Маркеры заменены на `XQX{n}XQX` (диапазон X/Q/Z переводчики не трогают). Аналогично маркеры терминологии `TQY{n}TQY` → `ZQZ{n}ZQZ`.
- Баг с папками прошлой версии. Переведённые файлы не сохранялись в выбранную папку прошлой локализации — кеш переводов для следующего апдейта не заполнялся. Теперь после перевода файл автоматически копируется в папку прошлой версии (подпапка целевого языка), а индекс переиспользования обновляется в текущей сессии.
- Вылет и зависание при открытии консоли (DevTools, F12 / «Разработка → Открыть консоль») в настройках. Причина — связка флагов `--disable-gpu --disable-gpu-compositing --disable-software-rasterizer --use-gl=swiftshader` (задавалась в `main.js`😞 не оставалось рабочего пути компоновки, GPU-процесс падал с `Failed to create shared context for virtualization`. Теперь рендеринг полностью программный через `app.disableHardwareAcceleration()` (Electron 28 делает это сам), лишние флаги убраны из `package.json` (`npm start` = `electron .`) и из `main.js`.
- Зависание при запуске, если остался не закрытый процесс прошлой сессии (после сбоя). Порты 18255/3000 и кеш Chromium были заняты зависшей копией — новый запуск замерзал молча. Добавлен одиночный инстанс: при повторном старте новая копия завершается и фокусирует уже открытое окно.
- Переводы с фрагментами `[THIS.Char...]` могли оставаться битыми (`БГ0ДГ: БГ1БГ (БГ2БГ)`), даже после смены маркеров. Причины и исправления:
  - кеш прошлой версии хранился по сырому тексту (минуя маркерную защиту) и отдавал мусорные переводы как есть — кешу добавлена версия формата, записи 1.0.2 отбрасываются при первом запуске 1.0.3;
  - папка «локализация прошлой версии» содержала файлы, переведённые 1.0.2 с битыми маркерами, и сервис переиспользования отдавал их раньше онлайн-переводчика — такие переводы (артефакт `БГ{n}ДГ` / `БГ{n}БГ`) теперь при индексации пропускаются и переводятся заново;
  - в тех же файлах прошлой версии могли попадаться строки, переведённые ещё более старыми версиями БЕЗ защиты фрагментов: переводчик брал код в кавычки (`«[GetScheme(...)]»`) или переписывал содержимое скобок (`[schemes|E]` → `[Concept('schemes', 'происков')|E]`). При переиспользовании из прошлой версии и из кэша теперь проверяется доверенность: все фрагменты `[...]` исходника должны присутствовать без изменений и без кавычек вокруг;
  - строки могли «застревать» непереведёнными, если в кэше/прошлой версии/словаре был записан «перевод», буквально повторяющий исходник (результат провала переводчика — 429/таймаут — когда-то попал в сохранённые данные). Перевод, равный исходнику, при наличии переводимого текста теперь считается провалом и не переиспользуется: такая строка всегда уходит к переводчику заново.
  - Исправлена фильтрация и проверка текста на переводы для более точных переводов
 

 

### Технические изменения

 

- `main.js` — маркеры защищённых фрагментов `QY{n}QY` → `XQX{n}XQX`; вызов `saveTranslation` после записи переведённого файла; снят блок конфликтующих GPU-флагов (остался `app.disableHardwareAcceleration()` + `no-sandbox`); `requestSingleInstanceLock` + обработчик `second-instance`.
- `package.json` — скрипт `start` упрощён до `electron .` (флаги были причиной зависания: CLI-флаги перекрывают `commandLine.appendSwitch` в `main.js`).
- `src/cache/translation-cache.js` — версия формата кеша: файл пишется как `{ __version, entries }`, при несовпадении версии кеш 1.0.2 не используется.
- `src/translator/translation-safety.js` — новый модуль эвристик пригодности перевода для переиспользования: маркер-артефакт `БГ{n}ДГ`/`БГ{n}БГ`, кавычки вокруг фрагмента, изменение содержимого фрагмента, а также «перевод», равный исходнику.
- `src/translator/previous-translations.js` — при построении индекса пропускаются переводы с артефактом старых маркеров `БГ{n}ДГ` / `БГ{n}БГ`; при обращении — проверка доверенности перевода по фрагментам исходника.
- `src/cache/translation-cache.js` — при попадании в кэш перевод проходит ту же проверку доверенности (испорченные записи считаются промахом и переводятся заново).
- `main.js` — в локальной цепочке разрешения (`resolveLocal`: терминология → словарь → прошлая версия → ваниль) результат принимается только после проверки доверенности; иначе строки уходят в онлайн-переводчик с маркерной защитой фрагментов.
- `src/terminology/terminology-engine.js` — маркеры терминов `TQY{n}TQY` → `ZQZ{n}ZQZ`.
- `src/translator/previous-translations.js` — метод `saveTranslation(outputPath, targetLang)`: копирование переведённого файла в папку прошлой версии + немедленное обновление in-memory индекса.
1.0.2
Spoiler
-Обновлены шаблоны добавлен упрощенный китайский перевод
- Ванильный перевод. Программа умеет сканировать папку локализации ванильной игры CK3 (`localisation/english`, `localisation/russian` и т.п.). Если значение строки мода совпадает со строкой ванилы, берётся готовый официальный перевод — онлайн-переводчик не вызывается. Приоритет источников: терминология → словарь пользователя → ванильная локализация → онлайн-переводчик.
- Настройка «Ванильная локализация»: выбор папки ванили, очистка, индикатор просканированных ключей по языкам. Принимает и папку конкретного языка (`...\localization\russian`), и корень локализации — индексы строятся по всем языкам.
- Автоопределение папки ванильной локализации. Кнопка «Найти автоматически» ищет Crusader Kings III: реестр Steam (`SteamPath`), `libraryfolders.vdf`, а также распространённые папки-библиотеки (`steamapps`, `Steam`, `SteamLibrary`, `Games`, ...) на всех дисках; подходит и лицензионный `SteamLibrary\steamapps\common\Crusader Kings III\game\localization\{russian}`, и `\game\localisation`. В настройках показан стандартный путь.
- Локализация прошлой версии мода. Пользователь указывает папку, где лежит перевод прошлой версии (например, резервная копия мода до апдейта). Если строка уже переведена — перевод берётся из прошлой версии, строка не переводится повторно. Помогает после обновления мода: не нужно вручную искать, какие строки добавились, а какие уже переведены. Функцию можно отключить в настройках. Приоритет: терминология → словарь → прошлая версия → ванила → онлайн.
- Безопасность переиспользования: если под тем же ключом в прошлой версии лежит английский текст и он изменился в новой версии — старый перевод не берётся.

 

### Исправлено
- Код языка упрощённого китайского: `simplified_chinese` → `simp_chinese` (игнорировался CK3 — файлы `_l_simplified_chinese.yml` не подхватываются). Теперь файл создаётся как `_l_simp_chinese.yml` с заголовком `l_simp_chinese:`, как требует игра.
- Код бразильского португальского: `braz_portuguese` → `braz_por`.
- Список языков сужен до 9 языков, реально поддерживаемых CK3: english, french, german, spanish, russian, korean, simp_chinese, japanese, polish. Убраны 19 лишних кодов (portuguese, italian, turkish и др.), которые CK3 игнорирует.

 

### Технические изменения
- `src/translator/vanilla-dictionary.js` — новый сервис: рекурсивное сканирование `.yml`/`.csv`, индексы «текст → ключ» (с нормализацией пробелов) и «ключ → перевод»; перестройка при смене папки.
- `src/translator/previous-translations.js` — новый сервис: индексы «ключ → перевод» по языкам, сверка с исходным файлом при наличии.
- `src/translator/vanilla-finder.js` — поиск папки ванильной локализации через реестр Steam, `libraryfolders.vdf`, fallback-пути на всех дисках.
- `main.js` — сервисы `vanillaDict`, `previousTranslations`; IPC `select-vanilla-folder`, `clear-vanilla-folder`, `get-vanilla-stats`, `auto-detect-vanilla`, `select-previous-folder`, `clear-previous-folder`, `get-previous-translations-stats`; локальное разрешение переводов в потоке `translate-file` до вызова онлайн-переводчика; `buildAppMenu()` / `showAboutDialog()`.
- `public/renderer.js` — панели настройки ванильной локализации и локализации прошлой версии; `LANG_PREFIX` и `LANG_DISPLAY` сужены до 9 языков CK3.
- `preload.js` — IPC-методы ванильной и прошлой локализации.
- `public/index2.html` (+ синхронный `index.html`) — карточки «Ванильная локализация» и «Локализация прошлой версии» в настройках.
- `src/i18n/i18n.js` — ключи `vanillaLocalization`, `vanillaFolderHint`, `vanillaClear`, `vanillaNoFolder`, `vanillaMissingFolder`, `vanillaScanned`, `vanillaBuildError`, `vanillaAutoDetect`, `vanillaNotFound`, `vanillaStandardPath`, `previousLocalization`, `reusePrevious`, `previousFolderHint`, `previousNoFolder`, `previousScanned`, `previousBuildError`, `previousMissingFolder`.
 
1.0.1 
Spoiler
### Упрощена установка
- Теперь это просто Exe приложение меньше весит проще использовать старый файл можно удалить.

 

### Интерфейс
- Редизайн панели «Перевод»:
  - карточка мода — иконка, имя, счётчик файлов, путь, кнопка выбора папки;
  - блок языков с кнопкой обмена (⇄) между исходным и целевым языком;
  - большая кнопка запуска перевода и индикатор «Готово к переводу».
- Прогресс перевода в виде полосы + карточек статистики: файлы, строки, статус/время.
- Список файлов: флажки «в очередь», тулбар очереди («Выбрать все» / «Очистить очередь» / счётчик выбранных), кнопки действий для каждого файла — Просмотр, Редактировать файл, Редактировать перевод.
- Живой перевод интерфейса: убраны захардкоженные строки, все элементы идут через i18n.

  

- Очередь перевода. Файлы помечаются флажками, перевод идёт по очереди. У переведённых файлов появляется метка языка (Ru/En/Fr...), а кнопка показывает количество выбранных файлов.
- Кнопка «Просмотр» для выбранного файла: предпросмотр ключей с оригиналом, переводом и статусом.
- Кнопка «Редактировать перевод». Открывает переведённый файл в редакторе; над каждым полем показан оригинальный текст для сравнения.
- Плагины языков интерфейса. Плагин может добавлять новый язык интерфейса приложения (поля `uiLanguage`, `uiLanguageName`, `uiTranslations`). Отсутствующие ключи автоматически подставляются из английского.
- Создание шаблона плагина: выбор типа. «Логика перевода» или «Язык интерфейса» (с кодом и именем языка). Шаблон языка интерфейса содержит все ключи с секционными комментариями (`// Nav`, `// Preview`, ...).
- Пример языкового пакета. Немецкий интерфейс (`ui-german-de.js`) — готовый образец для создания своего языка.
- Нативные имена языков. В списке «Язык интерфейса» языки показываются своими собственными именами (Deutsch, Русский, English), независимо от текущего языка интерфейса.

 

### Исправлено
- Счётчик прогресса при очереди показывал «1 файл» вместо позиции в очереди (`i/N`).
- Предпросмотр не открывался из списка файлов.
- Кнопки «Сохранить настройки» и «Открыть консоль» наезжали друг на друга.
- Ряд элементов интерфейса оставался без перевода при английском языке (подписи прогресса «Файлов/Строк/Статус», «Готов к переводу», «Мод не выбран», «Выберите папку мода», «N файлов локализации», кнопки редактора «Close/Save», плейсхолдер поиска, подсказки панели плагинов).
- Кнопка «Редактировать перевод» больше не открывается автоматически после перевода — только вручную.

 

### Технические изменения
- `src/i18n/i18n.js`: `registerLanguage`, `getLanguages`, цепочка fallback (язык плагина → en → ключ), резолв нативного имени языка.
- `src/i18n/i18n-loader.js`: безопасное чтение локализационных плагинов из папки плагинов.
- `main.js`: IPC `get-ui-language-plugins`, расширенный IPC `create-plugin` (тип шаблона).
- `preload.js`: `i18n.ready`, `getLanguages`, `registerLanguages`; `api.getUiLanguagePlugins`.
- `src/plugins/plugin-manager.js`: `createUiPluginTemplate` / `createUiPluginFile` (ключи и секционные комментарии генерируются из актуального словаря `src/i18n/i18n.js`).
- Документация `src/plugins/PLUGINS.md` — раздел «Языки интерфейса через плагины».

 

1.0.0
Spoiler

Базовая версия: перевод модов CK3 через MyMemory/Google/DeepL/XCL, словарь, история, кэш, плагины, два языка интерфейса (русский/английский).

 


Other Files from Heyvanushi


×
×
  • Create New...