From 03a14ffbfebc6b5816d1cbb7ac017d8126ac40d4 Mon Sep 17 00:00:00 2001 From: lzrdblzzrd Date: Mon, 21 Sep 2026 22:07:50 +0300 Subject: [PATCH] feat: full Russian translation of MCM option tooltips --- features/eid_mcm.lua | 150 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 128 insertions(+), 22 deletions(-) diff --git a/features/eid_mcm.lua b/features/eid_mcm.lua index 324aadf5..3ede5e74 100644 --- a/features/eid_mcm.lua +++ b/features/eid_mcm.lua @@ -267,10 +267,116 @@ EID.MCM_RU_Labels = { ---@param text string English label ---@return string label in Russian when EID language is Russian, English otherwise function EID.MCMTr(text) - if EID:getLanguage() == "ru" and EID.MCM_RU_Labels[text] ~= nil then - return EID.MCM_RU_Labels[text] + if EID:getLanguage() ~= "ru" then return text end + return EID.MCM_RU_Labels[text] or text +end + +-- Personal fork: Russian translations of MCM option tooltips (infoText). +EID.MCM_RU_Info = { + ["(12 = 500 combinations, 14 = 3,000, 16 = 13,000)"] = "(12 = 500 комбинаций, 14 = 3000, 16 = 13 000)", + ["(The unlock status check is not perfect and may be wrong)"] = "(Проверка разблокировки неточна и может ошибаться)", + ["Allows Players 2, 3, and 4 to display descriptions in co-op."] = "Показывает описания для 2–4-го игроков в коопе.", + ["Allows paired characters like Esau and Tainted Forgotten's bone pile to display descriptions."] = "Показывает описания для парных персонажей вроде Исава и кучи костей Порченого Забытого.", + ["Allows you to see your active item's effect, recently picked up items, and much more from anywhere"] = "Позволяет увидеть эффект активного артефакта, недавно взятые предметы и многое другое из любого места", + ["Always = Always show results"] = "Always = всегда показывать результаты", + ["As Tainted Cain, replaces pedestal descriptions with what they will turn into on touch"] = "За Порченого Каина заменяет описания на пьедесталах тем, во что они превратятся при касании", + ["Changes Health Ups and removes healing effect text when playing as a character that can't have red health"] = "Меняет прибавки здоровья и убирает текст о лечении за персонажей без красного здоровья", + ["Changes how the item being described is marked."] = "Меняет маркер описываемого предмета.", + ["Changes some colors to make the mod more colorblind-friendly."] = "Меняет часть цветов для удобства при дальтонизме.", + ["Changes the color of error messages like 'Unidentified pill'."] = "Меняет цвет сообщений об ошибках вроде «Неопознанная пилюля».", + ["Changes the color of mod indicator text (if enabled)."] = "Меняет цвет текста индикатора мода (если включён).", + ["Changes the color of names."] = "Меняет цвет названий.", + ["Changes the color of regular text."] = "Меняет цвет обычного текста.", + ["Changes the color of the last item pool indicator text (if enabled)."] = "Меняет цвет текста индикатора последнего пула (если включён).", + ["Changes the color of transformations."] = "Меняет цвет трансформаций.", + ["Changes the display mode of descriptions."] = "Меняет режим отображения описаний.", + ["Changes the display mode. All = Overview + categories. NoOverview = Categories only. Classic = Overview only."] = "Меняет режим отображения. All = обзор + категории. NoOverview = только категории. Classic = только обзор.", + ["Changes the language."] = "Меняет язык.", + ["Checks an additional X randomly chosen recipes on each pickup spawn/despawn/refresh."] = "Проверяет дополнительно X случайных рецептов при появлении/исчезновении/обновлении подбираемых предметов.", + ["Default = 11 (varies per language)"] = "По умолчанию = 11 (зависит от языка)", + ["Default = 130 (varies per language)"] = "По умолчанию = 130 (зависит от языка)", + ["Default = 45"] = "По умолчанию = 45", + ["Default = 60"] = "По умолчанию = 60", + ["Default: Text is displayed in the top left."] = "По умолчанию: текст отображается слева сверху.", + ["Descriptions besides the closest one are in Local Display mode."] = "Все описания, кроме ближайшего, — в локальном режиме.", + ["Display synergy notes for owned items under the description (Russian language only)."] = "Показывает заметки о синергиях имеющихся предметов под описанием (только русский язык).", + ["Display the effect of ghostly items, when player has the Flip item (T-Lazarus)"] = "Показывает эффект призрачных артефактов при наличии «Переворота» (Порченый Лазарь)", + ["Displays IDs of Spindown Dice results."] = "Показывает ID результатов Кубика с вычетом.", + ["Displays item effects when navigating the collection page in the main menu."] = "Показывает эффекты артефактов при просмотре страницы коллекции в главном меню.", + ["Displays item, trinket and character names in a different language than descriptions."] = "Показывает названия артефактов, брелоков и персонажей на другом языке, нежели описания.", + ["Displays names of Spindown Dice results."] = "Показывает названия результатов Кубика с вычетом.", + ["Displays possible Sanguine Bond rewards while in a Devil Room."] = "Показывает возможные награды Кровавых уз в комнате Дьявола.", + ["Displays reward chances for the next sacrifice in sacrifice rooms."] = "Показывает шансы наград за следующее жертвоприношение в комнатах жертвоприношений.", + ["Displays the description of items in Crane Games."] = "Показывает описания артефактов в кран-автоматах.", + ["Displays the descriptions of all objects in range."] = "Показывает описания всех объектов в радиусе.", + ["Displays the effect of the big dice in dice rooms."] = "Показывает эффект большого кубика в комнатах кубика.", + ["Displays the icon of the expected item pool for full rerolls."] = "Показывает иконку ожидаемого пула при полном реролле.", + ["Displays the icons of item pools for collectible would appear. REPENTOGON is needed for modded items"] = "Показывает иконки пулов, откуда мог выпасть артефакт. Для модовых предметов нужен REPENTOGON", + ["Displays the name of the expected item pool for full rerolls."] = "Показывает название ожидаемого пула при полном реролле.", + ["Displays the next random result of certain items in the Item Reminder."] = "Показывает следующий случайный результат некоторых артефактов в напоминании.", + ["Displays the number of coins until the next donation machine achievement."] = "Показывает, сколько монет осталось до следующего достижения автомата пожертвований.", + ["Displays the stats that would be gained by consuming a passive item."] = "Показывает статы, которые даст поглощение пассивного артефакта.", + ["Distance at which descriptions are displayed."] = "Дистанция, на которой показываются описания.", + ["Enabling this option allows hovering over certain HUD elements to get descriptions."] = "Позволяет наводить курсор на элементы интерфейса для получения описаний.", + ["Gets every recipe for the X best components; higher values mean slower calculations."] = "Считает рецепты для X лучших компонентов; чем выше значение, тем медленнее расчёты.", + ["Hide descriptions of items that are not yet on the collection page."] = "Скрывает описания артефактов, которых ещё нет на странице коллекции.", + ["Hides descriptions by default. Press the Toggle key to show them again."] = "Прячет описания по умолчанию. Клавиша переключения показывает их обратно.", + ["Hides descriptions when enemies are present."] = "Прячет описания, пока рядом враги.", + ["Hides the Bag of Crafting Helper when enemies are present."] = "Прячет помощник крафта, пока рядом враги.", + ["Hides the description of cards that can't be reached without breaking or flying over obstacles."] = "Прячет описания карт, до которых не добраться без полёта или разрушений.", + ["Hides the description of pills that can't be reached without breaking or flying over obstacles."] = "Прячет описания пилюль, до которых не добраться без полёта или разрушений.", + ["Hides the description of soul stones that can't be reached without breaking or flying over obstacles."] = "Прячет описания камней душ, до которых не добраться без полёта или разрушений.", + ["Highlight color for the names of items that need to be picked up for the collection page."] = "Цвет подсветки названий артефактов, нужных для страницы коллекции.", + ["Highlights items that are not yet on the collection page."] = "Подсвечивает артефакты, которых ещё нет на странице коллекции.", + ["Highlights the next Sanguine Bond reward in the description."] = "Подсвечивает следующую награду Кровавых уз в описании.", + ["Hold = Show results when holding up bag"] = "Hold = показывать результаты, держа сумку поднятой", + ["Hold this key to display the Item Reminder."] = "Удерживай клавишу, чтобы показать напоминание.", + ["How many times per second EID updates descriptions."] = "Сколько раз в секунду EID обновляет описания.", + ["Keeps pills unidentified until Isaac has used them at least once in the run. PHD and False PHD identify pills regardless of this setting."] = "Пилюли остаются неопознанными, пока Исаак не использует их хотя бы раз за забег. PHD и поддельный PHD опознают пилюли независимо от этой настройки.", + ["Languages marked as WIP are incomplete. Contributions welcome!"] = "Языки с пометкой WIP неполные. Помощь приветствуется!", + ["Local: Text is displayed under the described object."] = "Локальный: текст отображается под описываемым объектом.", + ["Maximum number of descriptions to display at once."] = "Максимум описаний, показываемых одновременно.", + ["Never = Disable the Bag of Crafting Helper."] = "Never = отключить помощник крафта.", + ["Note: Installing REPENTOGON is required for more detailed glitched item descriptions!"] = "Внимание: для подробных описаний глитч-артефактов нужен REPENTOGON!", + ["Number of descriptions that can be displayed at once in the Item Reminder."] = "Сколько описаний сразу показывается в напоминании.", + ["Number of item previews to display when holding Spindown Dice."] = "Сколько предпросмотров показывать, держа Кубик с вычетом.", + ["Numbers of craftable items from the list to show at once."] = "Сколько крафтящихся артефактов из списка показывать сразу.", + ["Press this key to scroll down the list of players/characters when applicable."] = "Клавиша прокрутки списка игроков/персонажей вниз.", + ["Press this key to scroll left through the categories."] = "Клавиша прокрутки категорий влево.", + ["Press this key to scroll right through the categories."] = "Клавиша прокрутки категорий вправо.", + ["Press this key to scroll up the list of players/characters when applicable."] = "Клавиша прокрутки списка игроков/персонажей вверх.", + ["Press this to clear all items currently detected in the bag."] = "Нажми, чтобы очистить все артефакты, найденные в сумке.", + ["Press this to clear all items currently detected on the floor."] = "Нажми, чтобы очистить все артефакты, найденные на полу.", + ["Prevents game inputs from being registered when the Item Reminder is visible."] = "Блокирует игровые нажатия, пока видно напоминание.", + ["Reduces the length of descriptions that are too long in the overview category."] = "Укорачивает слишком длинные описания в категории обзора.", + ["Resets all options back to their default values."] = "Сбрасывает все настройки к значениям по умолчанию.", + ["Reveals the current effect of 'random' items like Error (404) or Rainbow Worm in the Item Reminder."] = "Показывает текущий эффект «случайных» артефактов вроде Ошибки (404) или Радужного червя в напоминании.", + ["Save game you are currently on. This info needs to be set to get the correct lookup tables."] = "Текущий слот сохранения. Нужно выставить правильно, иначе таблицы будут неверными.", + ["Shows all the Bag of Crafting Helper hotkeys."] = "Показывает все горячие клавиши помощника крафта.", + ["Shows the description for the blind item in alt path floors."] = "Показывает описание слепого артефакта на альтернативных этажах.", + ["The preview skips locked items, like the dice does."] = "Предпросмотр пропускает закрытые артефакты, как и сам кубик.", + ["Toggles showing all recipes, recipes you've learned, what item pool/quality you might get, item previews when the bag is full, or floor pickups only."] = "Переключает показ всех рецептов, изученных рецептов, возможного пула/качества, предпросмотра при полной сумке или только предметов на полу.", + ["Toggles warnings for achievements being disabled, the game being outdated, and modded crafting recipes."] = "Переключает предупреждения об отключённых достижениях, устаревшей игре и модовых рецептах крафта.", + ["Toggles whether item names are shown above recipes."] = "Показывать ли названия артефактов над рецептами.", + ["Toggles whether recipes are shown as grouped ingredients or always 8 icons."] = "Показывать ли рецепты сгруппированными ингредиентами или всегда 8 иконок.", + ["Toggles whether recipes are sorted by quality + name, or just name."] = "Сортировать ли рецепты по качеству + названию или только по названию.", + ["When Isaac has flight, considers all resources reachable and displays their descriptions"] = "При полёте все ресурсы считаются доступными и их описания показываются", + ["With Glitched Crown, show summary list for cycling pedestals"] = "С Глитч-короной показывает сводный список сменяющихся пьедесталов", +} + +function EID.MCMTrInfo(info) + if EID:getLanguage() ~= "ru" then return info end + if type(info) == "string" then + return EID.MCM_RU_Info[info] or info end - return text + if type(info) == "table" then + local out = {} + for i, s in ipairs(info) do + out[i] = EID.MCM_RU_Info[s] or s + end + return out + end + return info end function EID:AddBooleanSetting(category, optionName, displayText, params) @@ -296,7 +402,7 @@ function EID:AddBooleanSetting(category, optionName, displayText, params) EID.Config[optionName] = currentBool EID.MCM_OptionChanged = true end, - Info = params.infoText or {} + Info = EID.MCMTrInfo(params.infoText or {}) } ) end @@ -323,7 +429,7 @@ function EID:AddNumberSetting(category, optionName, displayText, minimum, maximu EID.Config[optionName] = (params.indexOf and params.indexOf[currentNum]) or currentNum EID.MCM_OptionChanged = true end, - Info = params.infoText or {} + Info = EID.MCMTrInfo(params.infoText or {}) } ) end @@ -348,7 +454,7 @@ function EID:AddScrollSetting(category, optionName, displayText, scrollTable, pa EID.Config[optionName] = scrollTable[currentNum + 1] EID.MCM_OptionChanged = true end, - Info = params.infoText or {} + Info = EID.MCMTrInfo(params.infoText or {}) } ) end @@ -393,8 +499,8 @@ function EID:AddHotkeySetting(category, optionName, displayText, infoText, isCon keepSettingString = "This setting is currently set to \"" .. currentSettingString .. "\".$newlinePress this button to keep it unchanged.$newline$newline" end return "Press a button on your "..deviceString.." to change this setting.$newline$newline" .. keepSettingString .. "Press "..backString.." to go back and clear this setting." - end, - Info = infoText + end, + Info = EID.MCMTrInfo(infoText) } ) end @@ -472,7 +578,7 @@ if MCMLoaded then end renderDummyDesc(true) end, - Info = {"Changes the language.","Languages marked as WIP are incomplete. Contributions welcome!"} + Info = EID.MCMTrInfo({"Changes the language.","Languages marked as WIP are incomplete. Contributions welcome!"}) } ) -- Item Name Language @@ -515,7 +621,7 @@ if MCMLoaded then if resetFont then EID:loadFont(EID.modPath .. "resources/font/eid_"..EID.Config["FontType"]..".fnt") end renderDummyDesc(true) end, - Info = {"Resets all options back to their default values."} + Info = EID.MCMTrInfo({"Resets all options back to their default values."}) } ) @@ -900,7 +1006,7 @@ if MCMLoaded then OnChange = function() EID.BoC.BagItems = {} end, - Info = {"Press this to clear all items currently detected in the bag."} + Info = EID.MCMTrInfo({"Press this to clear all items currently detected in the bag."}) } ) --------Clear Floor--------- @@ -916,7 +1022,7 @@ if MCMLoaded then EID.BoC.FloorQuery = {} EID.BoC.CurrentPickupCount = -1 end, - Info = {"Press this to clear all items currently detected on the floor."} + Info = EID.MCMTrInfo({"Press this to clear all items currently detected on the floor."}) } ) end @@ -955,7 +1061,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["ItemCollectionColor"] = colorNameArray[currentNum] end, - Info = {"Highlight color for the names of items that need to be picked up for the collection page."} + Info = EID.MCMTrInfo({"Highlight color for the names of items that need to be picked up for the collection page."}) } ) MCM.AddSpace("EID", EID.MCMTr("Repentogon")) @@ -995,7 +1101,7 @@ if MCMLoaded then EID.MCM_OptionChanged = true EID.Config["SaveGameNumber"] = currentNum end, - Info = {"Save game you are currently on. This info needs to be set to get the correct lookup tables."} + Info = EID.MCMTrInfo({"Save game you are currently on. This info needs to be set to get the correct lookup tables."}) } ) MCM.AddText("EID", EID.MCMTr("Save Game"), function() @@ -1030,7 +1136,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["ItemCollectionColor"] = colorNameArray[currentNum] end, - Info = {"Highlight color for the names of items that need to be picked up for the collection page."} + Info = EID.MCMTrInfo({"Highlight color for the names of items that need to be picked up for the collection page."}) } ) else @@ -1069,7 +1175,7 @@ if MCMLoaded then OnChange = function(currentBool) EID.Config["EnableMouseControls"] = currentBool end, - Info = {"Enabling this option allows hovering over certain HUD elements to get descriptions."} + Info = EID.MCMTrInfo({"Enabling this option allows hovering over certain HUD elements to get descriptions."}) } ) -- Enable mouse controls @@ -1119,7 +1225,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["TextColor"] = colorNameArray[currentNum] end, - Info = {"Changes the color of regular text."} + Info = EID.MCMTrInfo({"Changes the color of regular text."}) } ) -- Name Color @@ -1143,7 +1249,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["ItemNameColor"] = colorNameArray[currentNum] end, - Info = {"Changes the color of names."} + Info = EID.MCMTrInfo({"Changes the color of names."}) } ) -- Transform Color @@ -1167,7 +1273,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["TransformationColor"] = colorNameArray[currentNum] end, - Info = {"Changes the color of transformations."} + Info = EID.MCMTrInfo({"Changes the color of transformations."}) } ) -- Error Color @@ -1191,7 +1297,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["ErrorColor"] = colorNameArray[currentNum] end, - Info = {"Changes the color of error messages like 'Unidentified pill'."} + Info = EID.MCMTrInfo({"Changes the color of error messages like 'Unidentified pill'."}) } ) -- Mod indicator Color @@ -1215,7 +1321,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["ModIndicatorTextColor"] = colorNameArray[currentNum] end, - Info = {"Changes the color of mod indicator text (if enabled)."} + Info = EID.MCMTrInfo({"Changes the color of mod indicator text (if enabled)."}) } ) -- Last Pool indicator Color (REPENTANCE ONLY) @@ -1240,7 +1346,7 @@ if MCMLoaded then if currentNum > #colorNameArray then currentNum = 1 end EID.Config["ItemPoolTextColor"] = colorNameArray[currentNum] end, - Info = {"Changes the color of the last item pool indicator text (if enabled)."} + Info = EID.MCMTrInfo({"Changes the color of the last item pool indicator text (if enabled)."}) } ) end