Tolmach
Русский перевод 87 модов Valheim и субтитров игры. Меняется только отображаемый текст: сохранения, рецепты и конфиги модов не затрагиваются.Изменения
0.6.0 (2026-09-29)
Highlights
Первый выпуск после 0.2.0 и первый на Thunderstore. Tolmach работает сам, без другого пакета русского перевода: 87 модов и субтитры игры, перевод с оригинального английского текста модов. Ниже изменения по этапам, от новых к старым.
Еще 18 модов
- Переведены 16 модов:
- Armory от Therzie: названия и описания доспехов, плаща и пояса, оружейная станция, бонусы комплектов, вкладка молота «Военное дело». Это не Valheim Armory от MidnightMods: у того свой полный русский;
- MyLittleUI: статистика персонажа в главном меню и слова часов в режиме Fuzzy;
- SmelterUpgrades: подсказки плавильни, печи и доменной печи, сообщения, улучшения в меню молота;
- Infinity Hammer, Server devcommands, World Edit Commands: сообщения при строительстве, на HUD и на большой карте;
- NetworkPerformanceSystem: сообщения при обрыве связи с сервером;
- ValheimInfiniteFire и Transmog: подсказки у огня и сообщение о переключении внешнего вида;
- Better Beehives, Spearfishing, Solid Hitboxes, Torches Are Fires, Wield Equipment While Swimming, Quick Teleport, Quick Stack Store: сообщение о несовпадении версий при входе на сервер (своего текста у этих модов нет или он уже переведен самим модом).
- Recipe Description Expansion: в подсказке комплекта части теперь названы как в игре, а не
внутренними именами вроде
ArmorTrollLeatherChest. Комплект тоже назван как в игре: своим ключом или названием эффекта комплекта. Комплекты Armory там больше не теряют название из-за регистра ключа. Для этого у шаблонов Tolmach появились параметрыitemиitemSet. - MissingPieces переведен самим модом полностью, но в трех строках были ошибки, и Tolmach
их исправляет: «Деревянная стена 1x1» (стояла кириллическая «х») и описания двух верхних стен
(на обе было скопировано одно описание). Для таких исправлений в каталоге есть список
replaceNative; остальной русский модов Tolmach по-прежнему только дополняет. - Текст методов, которые Harmony не может пропатчить (фильтр исключений, блок
fault), теперь переводится там, где он передается методу показа: например, заголовки окон редактора настроек Traders Extended. ПредупреждениеUI patch skippedв журнале остается, только если строка каталога действительно осталась английской. - У Transmog и Quick Stack Store свой русский полный, Tolmach его не трогает.
- Не переведено, подробности в
docs/COVERAGE.md:- справка и вывод консольных команд инструментов JereKuusela, окно ConditionalConfigSync об отказе в подключении;
- имена инструментов Infinity Hammer из его файла данных.
- Проверки: 455 тестов NUnit, валидатор данных со схемой каталога, проверка пакета.
SocialSystem и новые версии модов
-
Переведен SocialSystem 1.0.1: друзья, группы и личные сообщения.
- Окна «Общение» и «Группа», статусы («В сети», «Отошел», «Невидимый», «Не в сети»), подсказки кнопок и диалоги.
- Приглашения, проверка готовности, сообщения на экране и в чате (
[ЛС],[Группа]). - Справка команд
dm,rиpв консоли.
Мод хранит строки в своей таблице Jotunn, только на английском и немецком. Tolmach добавляет туда русскую и ничего не заменяет. Не переведена чит-команда
socialsystem_fake: ею автор мода проверяет друзей и группы в одиночку. -
В AdventureBackpacks 2.2.2, More_World_Locations_AIO 5.1.5 и WackysDatabase 2.5.36 снова переводятся строки из кода. Каталоги были сверены с прежними версиями этих модов, и, увидев другую версию, Tolmach пропускал перехват строк, а ключи словарей работали. В новых версиях все строки каталогов на прежних местах, словари и обучающие тексты не изменились, переводы те же.
-
Обновление мода больше не отключает его перевод. Если версия отличается от той, с которой сверен каталог, Tolmach переводит строки, которые находит, а новые строки мода остаются английскими. О версии и ненайденных строках он предупреждает в журнале и в
Tolmach.runtime.txt. ПараметрCompatibility.AllowOtherVersionsзаменен наCompatibility.OnlyAuditedVersions(по умолчанию выключен): он оставляет для других версий только словарные переводы, как раньше. Старую строкуAllowOtherVersionsизmuratovnik.tolmach.cfgможно удалить. -
Проверки: 380 тестов NUnit, валидатор данных со схемой каталога, проверка пакета.
По смыслу, а не по совпадению слов
- Исправлены названия, которые 0.5.2 взял из игры только потому, что английское слово то же,
хотя предмет у мода другой:
- GoldBars: «Небольшая кучка монет»; «Гора монет» в игре — большой клад;
- VNEI: вкладка «Рецепты», потому что в ней не только ремесло, но и добыча с существ, переплавка и готовка; фильтр «Все станции»: верстаки, инструменты, плавильни, существа;
- Shipyard: «Просмоленная лестница 2 м» — это лестница, как на корабле, а не стремянка;
- Amazing Nature: «Проверить» у гнезда шелкопрядов, как «Проверить пчел» у улья;
- VikingNPC: «Хозяин» в подсказке над викингом.
- Остальные правки 0.5.2 перепроверены по коду и ресурсам модов и остаются: «Пиры», «ремесленная стойка», «Залежи медной руды» (в моде Ore Deposit), «Рунная кузница», «Вкл.»/«Выкл.».
- Каталог перевода с опечаткой в названии раздела или с пустым значением вместо таблицы теперь не загружается, и это видно в журнале. Раньше строки такого раздела молча оставались английскими.
- Проверки: 373 теста NUnit, валидатор данных со схемой каталога, проверка пакета.
Как в игре
- Переводы сверены с русской локализацией игры:
- «ё» больше не пишется, как и в самой игре: «Черный лес», «Кремневая кирка». Имена собственные её сохраняют: «Бьёрн», «Ёрмунганд»;
- между числом и единицей измерения неразрывный пробел: «2 м», «17 с»;
- термины приведены к игровым:
- Culinary Horizons: вкладка «Пиры» вместо «Банкеты»;
- VNEI и Amazing Nature: «ремесленная стойка» вместо «станции»;
- VNEI: «Чертежи» вместо «Рецепты»;
- OreMines: «Залежи медной руды» вместо «Медная жила»;
- GoldBars: «Небольшая гора монет»;
- Amazing Nature: «Рунная кузница» и «Посмотреть» у гнезда шелкопрядов;
- Shipyard: «Просмоленная стремянка»;
- VikingNPC: «Владелец»;
- Lightkeeper: «Вкл.»/«Выкл.».
- TakeAllCooked: подсказка у стойки для готовки «Взять все готовое». Мод берёт её из своего конфига; если вы поменяли этот текст сами, он останется как есть.
- Проверки: 371 тест NUnit, валидатор данных, подсказка TakeAllCooked на DLL самого мода вне игры.
Сверка покрытия
- Все 68 модов сверены с перечнем строк, которые переводил другой пакет перевода. В части модов
строки выпали при подготовке 0.4.0: строку, которую нельзя было заменять в одном месте, не
перевели и во всех остальных. Теперь они переведены:
- MoveBuildPieces: сообщение «Блокировка для перемещения потеряна»;
- Huginn: группа меток «Портал» в фильтре карты, строки о залежах в выводе
huginn.lookingat; - Location Placement Accelerator: режим «Ванильный» на экране расстановки локаций;
- Amazing Nature: эффект «Провокация» и «Кремнёвая кирка»;
- Arsenal Reborn: эффект «Благословение Одина».
- Ключи, для которых мод не задаёт английского текста, но показывает их в игре, написаны по
контексту:
- Amazing Nature: названия шести скал («Ледяной утёс», «Скала Пепельных земель»), описание трофея лесного тролля, надпись на табличке мифического алтаря;
- Arsenal Reborn: описание «Глубинного клеймора»;
- VNEI: фильтр «Все станции».
- BossAdd: в сообщении о порядке убийства цвет Массы костей теперь по-русски («Сначала убейте [красную] Массу костей!»). Раньше цвет оставался корейским.
- Проверки: 368 тестов NUnit, валидатор данных, сверка новых литералов с IL модов. В игре эти изменения не проверялись.
Creature Level and Loot Control
- Переведён Creature Level and Loot Control: таблички существ с эффектами, стихиями и
особенностями боссов в роде существа («Огненная Летучая мышь», «Эйктюр Отражающий»),
сообщения о росте уровня сектора и о призыве на помощь, уровень сектора на миникарте, кнопки
редактора YAML, значения списков и все 69 настроек в окне F1, вывод консольных команд
cllc. Всего 68 модов и субтитры игры. - У этого мода своя YAML-таблица переводов, которую он читает один раз при запуске. Tolmach
загружается после него и подставляет русскую таблицу; если рядом с модом лежит свой
Russian.yml, дописывает только недостающее. Имена секций и ключей в.cfgостаются английскими. - Исправлено по первой проверке 0.4.0 в игре (игра запускается, русский включается):
- EquipmentAndQuickSlots: подписи слотов «Плечи» и «Оберег» (были Shoulders и Trinket);
- CraftyCartsRemake привязан к установленной 3.2.4, повозки со станциями и их хранилища называются «Повозка (Верстак)» и «Хранилище: Повозка (Верстак)» вместо «Верстак Повозка Storage»;
- AzuAutoStore: подсказки избранных предметов и ячеек («Ячейка в избранном…»);
- метки карты: цели рунных камней UsefulRunestones без своего названия («Лагерь Хильдир» вместо Hildir_camp) и названия локаций ExpertExplorer у меток, сохранённых на английском («Погребальные комнаты» вместо Burial Chambers);
- ложные предупреждения «Literal not replaced» у методов с перегрузками (AzuAutoStore, PlantEasily) и больше сотни предупреждений HarmonyX о поиске полей в журнале.
- Проверки: 368 тестов NUnit, валидатор данных, сверка литералов с IL; таблички, сообщения и настройки CLLC проверены на DLL самого мода вне игры, патчи остальных модов — на их DLL. В игре CLLC не проверялся.
Ещё 25 модов
- Переведены еще 25 модов, которые поддерживал другой пакет перевода: Balrond Amazing Nature, Arsenal Reborn, Constructions, Furniture Reborn, Dual Mastery и Lightkeeper, Passive Powers, OdinsSteelworks, Epic Loot, VNEI, Inventory Slots, Culinary Horizons, Hunter Legacy, Magic Supremacy, Eternal Legends, XPortal, TakeAllCooked, MoveBuildPieces, FoodDurationMultiplier, BossAdd, Huginn, FirstPersonMode, PerfectPlacement, Location Placement Accelerator и AzuWorkbenchTweaks. Всего 67 модов и субтитры игры.
- У модов со своим русским переводом Tolmach дописывает только недостающие строки: ключи без
перевода, вкладки строительства, сообщения ServerSync. Ключи, которые мод использует без
английского текста (в игре виден
[ключ]), переведены по месту использования. - ValheimArmory и ImpactfulSkills уже полностью переведены самими модами. Creature Level and Loot Control будет в следующей версии: ему нужен отдельный адаптер.
- Литералы можно задавать и в типах без namespace (
<global>в списке namespaces каталога). - Валидатор отклоняет ключ или сырую строку, которые в разных каталогах переведены по-разному.
- Проверки: 341 тест NUnit, валидатор данных, сверка всех 630 литералов с IL самих DLL. В игре моды этой версии ещё не проверялись.
Самостоятельный пакет: 42 мода и субтитры игры
- Tolmach работает сам по себе: другие пакеты русского перевода не нужны. Если такой пакет установлен, его строки по-прежнему не перезаписываются.
- Новые моды: Jotunn (окно несовместимости модов при подключении, отмена и повтор действий, сброс навыков), AdventureBackpacks, AzuAreaRepair, PlantEasily и Balrond Humanoid Randomizer (варианты существ вроде «Грейдворф-страж», эффекты, атаки, оружие).
- Субтитры звуков игры: 142 строки, которых нет в русской версии Valheim 1.0.16.
- Расширены переводы: More World Locations AIO (порты, грузы и доставки, обучение в порту, святилища и благословения, путевые камни, торговцы, книги навыков), Balrond Shipyard (предметы, постройки, чертежи улучшений кораблей, записи Compendium), PlantEverything (названия и описания растений), AzuAutoStore, AzuCraftyBoxes и Build Camera (в том числе сообщения о несовпадении версий модов при подключении).
- Исправлены переводы в 17 модах: термины приведены к русской версии игры (фулинги вместо гоблинов, Павшие, Матерь, Серокамень, повозка, рассекающий урон), исправлена грамматика сообщений DynamicStoragePiles, реплики NPC больше не зависят от пола.
- Названия, описания и записи Compendium, которые моды хранят в объектах, переводятся при показе: сохранённые данные остаются на английском.
- Вывод консольных команд переводится у модов, где он указан в
docs/COVERAGE.md. Имена команд и аргументов остаются английскими. - Исправлен запуск игры вместе со StartupAccelerator: загрузка больше не останавливается.
Tolmach не патчит методы с фильтром исключений (
catch … when) и с блокомfault(итераторы сtry/finally): HarmonyX 2.9 не может их правильно пересобрать, а StartupAccelerator применяет патчи позже, и ошибка останавливала игру. Поэтому заголовки окон редактора TradersExtended остаются английскими; содержимое окон переводится, как раньше. - Файлы каталогов называются
tolmach-<мод>.json. Встроенный в SleepSkip и другие моды LocalizationManager принималSleepSkip.jsonза свой файл перевода и падал. - При отложенных патчах в логе больше нет сотен ложных предупреждений «Literal not replaced»: проверка выполняется, когда транспайлер действительно отработал.
- Проверки: 237 тестов NUnit, валидатор данных и сверка всех 318 литералов с IL установленных DLL. В самой игре пакет ещё не проверялся.
Features
- translate SocialSystem and 18 more mods, correct three MissingPieces strings and show game names in the Recipe Description Expansion set block (ea3e9ac)
- keep a mod's adapters when its version differs from the audited one (ea3e9ac)
- reject catalogs that do not match their types (f48a3d5)
- translate config texts that a mod reads in a named method (7c8df24)
- apply Creature Level and Loot Control's own language table (a445acb)
- allow literals in types without a namespace (f6a913f)
- translate stored display text, add five mods and the game's captions (66b5328)
- catalog: translate Creature Level and Loot Control (ae58edd)
- catalog: translate 25 more mods (09ab47d)
- package: replace the package icon with the book artwork (f98cb6b)
- validation: check catalogs against a JSON Schema (01b098c)
- validation: check the CLLC language table (a419d92)
- validation: require one translation per key across catalogs (87813bd)
Bug Fixes
- translate display calls of methods Harmony cannot rebuild (ea3e9ac)
- patch only the overload that holds a literal (5145688)
- leave methods with fault blocks unpatched (7e9c49c)
- leave methods with exception filters unpatched (3a35f8e)
- build: decode the package icon instead of reading its header (d585efd)
- catalog: name seven objects by what they are in the mod (c1ecc3b)
- catalog: follow the game's spelling, spacing and terms (8d73a7f)
- catalog: add the strings found by the coverage audit (0a2c5df)
- catalog: strings left English in the first 0.4.0 game session (22cb6a4)
- catalog: name catalogs
tolmach-<id>.json(69dd148) - catalog: use the game's Russian terms in 17 catalogs (8d0de49)
0.2.0 — новое имя: Tolmach
- Пакет называется Tolmach («толмач» — старинное русское «переводчик»). Переводы и поведение не изменились: все 37 каталогов побайтно совпадают с 0.1.3.
- Новый идентификатор плагина
muratovnik.tolmach(былlocal.valheim.russianpack). DLL —Tolmach.dll, настройки —BepInEx/config/muratovnik.tolmach.cfg, отчёт —BepInEx/config/Tolmach.runtime.txt. Если у вас стоял локальный ValheimRussianPack, удалите его: у модов разные идентификаторы, и иначе загрузятся оба. Настройки из старого файла не переносятся. - Первый публичный выпуск. Исходники и релизы —
github.com/Muratovnik/Tolmach. ZIP релиза
собирается из закоммиченного кода, рядом публикуется
SHA256SUMS. - Сборка:
Build.ps1берёт пути из переменныхTOLMACH_*и принимает-OutputDirectory. Список хешей исходниковSHA256SUMS.txtудалён: целостность исходников обеспечивает Git.
0.1.3 — первый собранный пакет для Thunderstore, Gale и r2modman
- Впервые собрана и проверена DLL: 167 тестов NUnit с библиотеками игры, BepInEx и Harmony из профиля. Сборка выдаёт пакет Thunderstore, который импортируется в Gale и r2modman как локальный мод; зависимости BepInExPack и JsonDotNET указаны в манифесте.
- Сообщение OreMines «Mines have been reset!» теперь переводится и в чате, и над головой:
перехват перенесён на
Chat.OnNewChatMessage. Прежний поискChat.AddStringне находил метод, объявленный вTerminal. - Нативная регистрация через
LocalizeKeyбольше не перезаписывает уже существующий чужой русский перевод ключа. - Перевод не записывается в отдельные «английские» экземпляры
Localization, которые создают моды (например, SkillManager для имён разделов конфига). - Язык игры определяется её собственным
GetSelectedLanguage(учитывает Steam Deck). Язык, выбранный игрой при первом запуске по локали системы, подхватывается при ближайшем обновлении, а не после перезапуска. - Метод мода, ссылающийся на отсутствующую необязательную зависимость, пропускается с предупреждением и больше не прерывает установку остальных адаптеров этого мода.
- Удалено правило для
Chat.AddString, которое никогда не срабатывало: вывод консольных команд модов по-прежнему не переводится. - Сборка: исправлен
build-receipt.json(было ~57 МБ из-за сериализации PowerShell, с локальными путями). ZIP собирает Thunderstore CLI, затем проверяются формат пакета, раскладка для Gale и хеши DLL/каталогов. В проект добавленnuget.config. - Собственный установщик
Install.ps1/Install.cmdудалён: установку выполняет менеджер модов. Переводы и привязки 37 каталогов не изменены.
0.1.2 — стандартные механизмы и разделение проверки данных/исполнения
- Сборка через SDK/MSBuild; один production-проект. Copy-only установка отделена.
- NUnit/VSTest использует DLL production-проекта, без повторной компиляции src.
- Удалены Python-переводчик, C#-лексер, собственный test Main и Reflect.Path.
- Общая рефлексия и IL labels переданы Harmony. Нет сканирования 12 words-only модулей.
- Jötunn public GetTranslations/AddTranslation, включая in string; Map не читается.
- Глобальная регистрация через Translate/AddWord; защита существующего русского также при обратной регистрации нашего текста. Обновление кэша после native refresh.
- Неуспешный rebind сбрасывает прежний runtime context; nullable входы display API оставляют оригинал вместо исключения. Ошибка отписки не останавливает очистку.
- Пакетный путь сравнивает DLL/каталоги с тестовым выходом, не принимает пустой/пропущенный тестовый запуск. Старый ZIP отделяется от нового результата.
- ZIP-установка проверяет разрешённые файлы и каталоги, дубликаты и размеры до записи профиля.
- Все 37 каталогов сохранены без изменения; DLL и игровой запуск по-прежнему не получены.
История предшествующей поставки
Изменения
0.1.1 — исправления после ревью 0.1.0
Подтверждённые замечания предыдущего ревью
- F2:
BalrondShipyard.mergedвместо имени файла без.merged. - F3: отдельное поле
pluginVersionдля всех 37 модулей; StructureTweaks1.37. Отсутствующие build/revision трактуются как нули; ненулевая ревизия сравнивается. - F4: реальные подписи ExpertExplorer и семантический параметр стандартного имени в уведомлении о добавленной метке.
- F5: только явно помеченные вложенные сообщения/названия полей переводятся повторно. Глубина вложения ограничена; остальные параметры непрозрачны.
- F6: создание меток исключено из универсальных UI-перехватов. Отдельный адаптер меняет только подпись виджета; предусмотрено восстановление при смене языка и настройка отключения перевода стандартных меток.
- F1 остаётся открытым: готовый бинарник не собран; среды исполнения нет.
Дополнительно найдено и исправлено при внесении правок
- TradersExtended объединяет несколько ошибок. Добавлены 22 замены UI-литералов
строго в
BuildItemRowValidation,GetKeyValidation,GetIntersectionValidation. Идентификаторы и проверяемые значения не переводятся. - Ограничитель версии теперь применяется и к LegacyDisplay/OreMines chat-hook, которые иначе могли продолжать работать на неподтверждённой версии.
- Старое сравнение версии игнорировало четвёртый компонент. Ненулевая revision теперь препятствует UI-патчам так же, как другой build/minor.
- Отдельный адаптер постоянной подписи PortalLines отслеживает слабые ссылки и обновляет известный текст после переключения языка.
- Собственный
IlReader.csзаменён наHarmony.PatchProcessor.GetOriginalInstructions. - Добавлены диагностика фактических мест замены и отсутствующих ожидаемых литералов.
- Производственный CatalogLoader используется тестами; убраны копии DTO из EngineStubs. Загрузка отвергает повторяющиеся JSON-ключи, пустые обязательные значения, несовпадающие плейсхолдеры и неизвестные правила перевода аргументов.
- Установщик компилирует тот же код загрузчика/движка/адаптеров для тестов, проверяет версию созданной DLL, сохраняет идентичности зависимостей и build-receipt. Сторонние тестовые зависимости остаются только во временной папке.
- Диагностика сбоя отката не скрывает его; native stderr собирается с проверкой exit code, а не принимается автоматически за завершённый журнал ошибок.
Все пункты относятся к изменённым исходникам и данным. Игровой запуск, фактическая компиляция и Windows-установка не подтверждены. Полный статус — в docs/REVIEW-0.1.1.md.
