LUI.addmenubutton("pc_controls", { index = 4, text = "@LUA_MENU_CHOOSE_LANGUAGE", description = Engine.Localize("@LUA_MENU_CHOOSE_LANGUAGE_DESC"), callback = function() LUI.FlowManager.RequestAddMenu(nil, "choose_language_menu") end }) local universalfont = RegisterFont("fonts/mix.ttf", 30) local function setuniversalfont(lang) LUI.MenuGenericButtons.ButtonLabelFont.Font = universalfont end local function togglecustomfonts() LUI.FlowManager.RequestAddMenu(nil, "generic_yesno_popup", false, nil, true, { popup_title = Engine.Localize("@MENU_CCS_RESTART_CONFIRMATION_TITLE"), message_text = Engine.Localize("@MENU_HDR_REBOOT_DESC"), yes_action = function() config.set("disable_custom_fonts", not config.get("disable_custom_fonts")) updater.relaunch() end }) end local function adjustverticaloffset(table, offset) for k, v in pairs(table) do if (table[k].y_offset ~= nil) then table[k].y_offset = offset end end end LUI.MenuBuilder.registerType("choose_language_menu", function(a1) local menu = LUI.MenuTemplate.new(a1, { menu_title = "@LUA_MENU_CHOOSE_LANGUAGE", menu_list_divider_top_offset = -(LUI.H1MenuTab.tabChangeHoldingElementHeight + H1MenuDims.spacing), menu_width = 240, uppercase_title = true }) local languages = Engine.GetSupportedLanguages() local originalfont = LUI.MenuGenericButtons.ButtonLabelFont.Font for i = 1, #languages do local id = languages[i].id local lang = Engine.GetCurrentLanguage() if language.isasian() or not language.isnonlatin() or not config.get("disable_custom_fonts") then setuniversalfont(id) end local button = menu:AddButton("", function() LUI.FlowManager.RequestAddMenu(nil, "choose_language_confirm_popup", false, nil, true, { language = languages[i].id }) end, languages[i].id == lang, true, nil, { desc_text = Engine.Localize("LOCALE_" .. (languages[i].id)) }) local label = button:getFirstDescendentById("text_label") label:setText(Engine.ToUpperCase(languages[i].name)) end LUI.MenuGenericButtons.ButtonLabelFont.Font = originalfont LUI.Options.InitScrollingList(menu.list, nil, { rows = 10 }) LUI.Options.AddOptionTextInfo(menu) if (language.isnonlatin() and not language.iscustom()) then if (config.get("disable_custom_fonts")) then menu:AddHelp({ name = "add_button_helper_text", button_ref = "button_alt2", helper_text = Engine.Localize("@LUA_MENU_FALLBACK_ENABLE"), side = "right", clickable = true }, togglecustomfonts) else menu:AddHelp({ name = "add_button_helper_text", button_ref = "button_alt2", helper_text = Engine.Localize("@LUA_MENU_FALLBACK_DISABLE"), side = "right", clickable = true }, togglecustomfonts) end end menu:AddBackButton() return menu end) -- fix for Y-offset in button text (russian_partial, default font) if (config.get("language") == "russian_partial" and config.get("disable_custom_fonts")) then LUI.UIButtonText.IsOffsetedLanguage = function() return true end end if (not (config.get("disable_custom_fonts"))) then -- fix for Y-offset in button text (global patch, custom font) adjustverticaloffset(GenericButtonSettings.Styles, 2) adjustverticaloffset(GenericButtonSettings.Styles.GlassButton.SubStyles, 2) LUI.UIButtonText.IsOffsetedLanguage = function() return false end -- fix for ammo counter (polish/russian) if (not Engine.InFrontend()) then local weaponinfodef = LUI.MenuBuilder.m_definitions["WeaponInfoHudDef"] LUI.MenuBuilder.m_definitions["WeaponInfoHudDef"] = function(...) local rus = CoD.Language.Russian CoD.Language.Russian = 1337 local pol = CoD.Language.Polish CoD.Language.Polish = 1338 local res = weaponinfodef(...) CoD.Language.Russian = rus CoD.Language.Polish = pol return res end else local levelselectmenu = LUI.sp_menus.LevelSelectMenu local setupinfobox = levelselectmenu.SetupInfoBoxLeftForArcadeMode levelselectmenu.SetupInfoBoxLeftForArcadeMode = function(...) local rus = CoD.Language.Russian CoD.Language.Russian = 1337 local pol = CoD.Language.Polish CoD.Language.Polish = 1338 local res = setupinfobox(...) CoD.Language.Russian = rus CoD.Language.Polish = pol return res end end -- fix for ammo counter (global patch) if (language.isnonlatin()) then local scale = function(size) return size * 720 / 1080 end CoD.TextSettings.SP_HudAmmoStatusText = { Font = RegisterFont("fonts/bank.ttf", 16), Height = 16 } CoD.TextSettings.SP_HudAmmoCounterFont = { Font = RegisterFont("fonts/bank.ttf", 34), Height = 34 } CoD.TextSettings.HudAmmoCounterFont = { Font = RegisterFont("fonts/bank.ttf", 105), Height = 64 } -- forced gothic font for headers (arabic/slavic) if (language.isslavic() or language.isarabic()) then CoD.TextSettings.H2TitleFont = { Font = RegisterFont("fonts/bank.ttf", 56), Height = scale(56) } end end end