Merge pull request #431 from VladWinner/fonts4

This commit is contained in:
fed 2023-02-24 18:38:22 +01:00 committed by GitHub
commit 1bcd58cea5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 254 additions and 133 deletions

View File

@ -10,129 +10,171 @@ game:addlocalizedstring("MENU_japanese_full", "日本語")
game:addlocalizedstring("MENU_japanese_partial", "日本語(一部)") game:addlocalizedstring("MENU_japanese_partial", "日本語(一部)")
game:addlocalizedstring("MENU_traditional_chinese", "繁體中文") game:addlocalizedstring("MENU_traditional_chinese", "繁體中文")
game:addlocalizedstring("MENU_simplified_chinese", "简体中文") game:addlocalizedstring("MENU_simplified_chinese", "简体中文")
game:addlocalizedstring("MENU_arabic", "العربية") game:addlocalizedstring("MENU_arabic", "ةيبرعلا")
game:addlocalizedstring("MENU_czech", "České") game:addlocalizedstring("MENU_czech", "Čeština") -- text only (English dubbing)
game:addlocalizedstring("MENU_spanishna", "Español (América Latina)") -- text only (English dubbing) game:addlocalizedstring("MENU_spanishna", "Español (América Latina)") -- text only (English dubbing)
game:addlocalizedstring("MENU_korean", "한국어") game:addlocalizedstring("MENU_korean", "한국어")
game:addlocalizedstring("MENU_english_safe", "English (Safe)") game:addlocalizedstring("MENU_english_safe", "English (Safe)")
game:addlocalizedstring("MENU_russian_partial", "Русский (Англ. озвучка)") -- text only (English dubbing) game:addlocalizedstring("MENU_russian_partial", "Русский (Англ. озвучка)") -- text only (English dubbing)
LUI.addmenubutton("pc_controls", { LUI.addmenubutton("pc_controls", {
index = 4, index = 4,
text = "@LUA_MENU_CHOOSE_LANGUAGE", text = "@LUA_MENU_CHOOSE_LANGUAGE",
description = Engine.Localize("@LUA_MENU_CHOOSE_LANGUAGE_DESC"), description = Engine.Localize("@LUA_MENU_CHOOSE_LANGUAGE_DESC"),
callback = function() callback = function()
LUI.FlowManager.RequestAddMenu(nil, "choose_language_menu") LUI.FlowManager.RequestAddMenu(nil, "choose_language_menu")
end end
}) })
local universalfont = RegisterFont("fallback/fonts/default.otf", 30) local universalfont = RegisterFont("fonts/mix.ttf", 30)
local function setuniversalfont(lang) local function setuniversalfont(lang)
LUI.MenuGenericButtons.ButtonLabelFont.Font = universalfont 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 end
LUI.MenuBuilder.registerType("choose_language_menu", function(a1) LUI.MenuBuilder.registerType("choose_language_menu", function(a1)
local menu = LUI.MenuTemplate.new(a1, { local menu = LUI.MenuTemplate.new(a1, {
menu_title = "@LUA_MENU_CHOOSE_LANGUAGE", menu_title = "@LUA_MENU_CHOOSE_LANGUAGE",
menu_list_divider_top_offset = -(LUI.H1MenuTab.tabChangeHoldingElementHeight + H1MenuDims.spacing), menu_list_divider_top_offset = -(LUI.H1MenuTab.tabChangeHoldingElementHeight + H1MenuDims.spacing),
menu_width = 240, menu_width = 240,
uppercase_title = true uppercase_title = true
}) })
local languages = Engine.GetSupportedLanguages() local languages = Engine.GetSupportedLanguages()
local originalfont = LUI.MenuGenericButtons.ButtonLabelFont.Font local originalfont = LUI.MenuGenericButtons.ButtonLabelFont.Font
for i = 1, #languages do for i = 1, #languages do
local id = languages[i].id local id = languages[i].id
local lang = Engine.GetCurrentLanguage() local lang = Engine.GetCurrentLanguage()
setuniversalfont(id) if language.isasian() or not language.isnonlatin() or not config.get("disable_custom_fonts") then
setuniversalfont(id)
local button = menu:AddButton("", function() end
LUI.FlowManager.RequestAddMenu(nil, "choose_language_confirm_popup", false, nil, true, {
language = languages[i].id
})
end, languages[i].id == Engine.GetCurrentLanguage(), true, nil, {
desc_text = Engine.Localize("LOCALE_" .. (languages[i].id))
})
local label = button:getFirstDescendentById("text_label") local button = menu:AddButton("", function()
label:setText(Engine.ToUpperCase(languages[i].name)) LUI.FlowManager.RequestAddMenu(nil, "choose_language_confirm_popup", false, nil, true, {
end language = languages[i].id
})
end, languages[i].id == lang, true, nil, {
desc_text = Engine.Localize("LOCALE_" .. (languages[i].id))
})
LUI.MenuGenericButtons.ButtonLabelFont.Font = originalfont local label = button:getFirstDescendentById("text_label")
label:setText(Engine.ToUpperCase(languages[i].name))
end
LUI.Options.InitScrollingList(menu.list, nil, { LUI.MenuGenericButtons.ButtonLabelFont.Font = originalfont
rows = 10
})
LUI.Options.AddOptionTextInfo(menu) LUI.Options.InitScrollingList(menu.list, nil, {
menu:AddBackButton() rows = 10
})
return menu LUI.Options.AddOptionTextInfo(menu)
if language.isnonlatin() and config.get("language") ~= "czech" 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) end)
-- global patch -- fix for Y-offset in button text (russian_partial, default font)
LUI.UIButtonText.IsOffsetedLanguage = function() if config.get("language") == "russian_partial" and config.get("disable_custom_fonts") then
return false LUI.UIButtonText.IsOffsetedLanguage = function()
return true
end
end end
-- pol/rus patch if not (config.get("disable_custom_fonts")) then
-- fix for Y-offset in button text (global patch, custom font)
LUI.UIButtonText.IsOffsetedLanguage = function()
return false
end
if (not Engine.InFrontend()) then -- fix for ammo counter (polish/russian)
local weaponinfodef = LUI.MenuBuilder.m_definitions["WeaponInfoHudDef"] if not Engine.InFrontend() then
LUI.MenuBuilder.m_definitions["WeaponInfoHudDef"] = function(...) local weaponinfodef = LUI.MenuBuilder.m_definitions["WeaponInfoHudDef"]
local rus = CoD.Language.Russian LUI.MenuBuilder.m_definitions["WeaponInfoHudDef"] = function(...)
CoD.Language.Russian = 1337 local rus = CoD.Language.Russian
local pol = CoD.Language.Polish CoD.Language.Russian = 1337
CoD.Language.Polish = 1338 local pol = CoD.Language.Polish
local res = weaponinfodef(...) CoD.Language.Polish = 1338
CoD.Language.Russian = rus local res = weaponinfodef(...)
CoD.Language.Polish = pol CoD.Language.Russian = rus
return res CoD.Language.Polish = pol
end return res
else end
local levelselectmenu = LUI.sp_menus.LevelSelectMenu else
local setupinfobox = levelselectmenu.SetupInfoBoxLeftForArcadeMode local levelselectmenu = LUI.sp_menus.LevelSelectMenu
levelselectmenu.SetupInfoBoxLeftForArcadeMode = function(...) local setupinfobox = levelselectmenu.SetupInfoBoxLeftForArcadeMode
local rus = CoD.Language.Russian levelselectmenu.SetupInfoBoxLeftForArcadeMode = function(...)
CoD.Language.Russian = 1337 local rus = CoD.Language.Russian
local pol = CoD.Language.Polish CoD.Language.Russian = 1337
CoD.Language.Polish = 1338 local pol = CoD.Language.Polish
local res = setupinfobox(...) CoD.Language.Polish = 1338
CoD.Language.Russian = rus local res = setupinfobox(...)
CoD.Language.Polish = pol CoD.Language.Russian = rus
return res CoD.Language.Polish = pol
end return res
end end
end
-- ara/ces/pol/rus patch
-- fix for ammo counter (global patch)
local lang = Engine.GetCurrentLanguage() if language.isnonlatin() then
if (lang == 5 or lang == 6 or lang == 12 or lang == 13 or lang == 17) then local scale = function(size)
local scale = function (size) return size * 720 / 1080
return size * 720 / 1080 end
end
CoD.TextSettings.SP_HudAmmoStatusText = {
CoD.TextSettings.SP_HudAmmoStatusText = { Font = RegisterFont("fonts/mix_gothic.ttf", 16),
Font = RegisterFont("fonts/bank.ttf", 16), Height = 16
Height = 16 }
}
CoD.TextSettings.SP_HudAmmoCounterFont = {
CoD.TextSettings.SP_HudAmmoCounterFont = { Font = RegisterFont("fonts/mix_gothic.ttf", 34),
Font = RegisterFont("fonts/bank.ttf", 34), Height = 34
Height = 34 }
}
CoD.TextSettings.HudAmmoCounterFont = {
CoD.TextSettings.HudAmmoCounterFont = { Font = RegisterFont("fonts/mix_gothic.ttf", 105),
Font = RegisterFont("fonts/bank.ttf", 105), Height = 64
Height = 64 }
} -- forced gothic font for headers (arabic/slavic)
if language.isslavic() or language.isarabic() then
CoD.TextSettings.H2TitleFont = { CoD.TextSettings.H2TitleFont = {
Font = RegisterFont("fonts/bank.ttf", 56), Font = RegisterFont("fonts/mix_gothic.ttf", 56),
Height = scale(56) Height = scale(56)
} }
end
end
end end

View File

@ -0,0 +1,5 @@
stringtable,font_replacements.csv
ttf,fonts/ibmplexsansarabic-semibold_custom.ttf
ttf,fonts/mix.ttf
ttf,fonts/mix_gothic.ttf
ttf,fonts/mix_open.ttf
1 stringtable font_replacements.csv
2 ttf fonts/ibmplexsansarabic-semibold_custom.ttf
3 ttf fonts/mix.ttf
4 ttf fonts/mix_gothic.ttf
5 ttf fonts/mix_open.ttf

View File

@ -0,0 +1,25 @@
arabic,fonts/bank.ttf,fonts/mix_gothic.ttf,
arabic,fonts/default.otf,fonts/mix.ttf,
arabic,fonts/defaultBold.otf,fonts/ibmplexsansarabic-semibold_custom.ttf,
czech,fonts/bank.ttf,fonts/mix_gothic.ttf,
czech,fonts/default.otf,fonts/mix.ttf,
czech,fonts/defaultBold.otf,fonts/mix_open.ttf,
japanese_full,fonts/default.otf,fonts/mix.ttf,
japanese_full,fonts/defaultBold.otf,fonts/mix_open.ttf,
japanese_partial,fonts/default.otf,fonts/mix.ttf,
japanese_partial,fonts/defaultBold.otf,fonts/mix_open.ttf,
korean,fonts/default.otf,fonts/mix.ttf,
korean,fonts/defaultBold.otf,fonts/mix_open.ttf,
polish,fonts/bank.ttf,fonts/mix_gothic.ttf,
polish,fonts/default.otf,fonts/mix.ttf,
polish,fonts/defaultBold.otf,fonts/mix_open.ttf,
russian,fonts/bank.ttf,fonts/mix_gothic.ttf,
russian,fonts/default.otf,fonts/mix.ttf,
russian,fonts/defaultBold.otf,fonts/mix_open.ttf,
russian_partial,fonts/bank.ttf,fonts/mix_gothic.ttf,
russian_partial,fonts/default.otf,fonts/mix.ttf,
russian_partial,fonts/defaultBold.otf,fonts/mix_open.ttf,
simplified_chinese,fonts/default.otf,fonts/mix.ttf,
simplified_chinese,fonts/defaultBold.otf,fonts/mix_open.ttf,
traditional_chinese,fonts/default.otf,fonts/mix.ttf,
traditional_chinese,fonts/defaultBold.otf,fonts/mix_open.ttf,
1 arabic fonts/bank.ttf fonts/mix_gothic.ttf
2 arabic fonts/default.otf fonts/mix.ttf
3 arabic fonts/defaultBold.otf fonts/ibmplexsansarabic-semibold_custom.ttf
4 czech fonts/bank.ttf fonts/mix_gothic.ttf
5 czech fonts/default.otf fonts/mix.ttf
6 czech fonts/defaultBold.otf fonts/mix_open.ttf
7 japanese_full fonts/default.otf fonts/mix.ttf
8 japanese_full fonts/defaultBold.otf fonts/mix_open.ttf
9 japanese_partial fonts/default.otf fonts/mix.ttf
10 japanese_partial fonts/defaultBold.otf fonts/mix_open.ttf
11 korean fonts/default.otf fonts/mix.ttf
12 korean fonts/defaultBold.otf fonts/mix_open.ttf
13 polish fonts/bank.ttf fonts/mix_gothic.ttf
14 polish fonts/default.otf fonts/mix.ttf
15 polish fonts/defaultBold.otf fonts/mix_open.ttf
16 russian fonts/bank.ttf fonts/mix_gothic.ttf
17 russian fonts/default.otf fonts/mix.ttf
18 russian fonts/defaultBold.otf fonts/mix_open.ttf
19 russian_partial fonts/bank.ttf fonts/mix_gothic.ttf
20 russian_partial fonts/default.otf fonts/mix.ttf
21 russian_partial fonts/defaultBold.otf fonts/mix_open.ttf
22 simplified_chinese fonts/default.otf fonts/mix.ttf
23 simplified_chinese fonts/defaultBold.otf fonts/mix_open.ttf
24 traditional_chinese fonts/default.otf fonts/mix.ttf
25 traditional_chinese fonts/defaultBold.otf fonts/mix_open.ttf

View File

@ -1,23 +1,25 @@
{ {
"LOCALE_0": "إنجليزي", "LOCALE_0": "يزيلجنإ",
"LOCALE_1": "فرنسي", "LOCALE_1": "يسنرف",
"LOCALE_2": "ألمانية", "LOCALE_2": "ةيناملأ",
"LOCALE_3": "إيطالي", "LOCALE_3": "يلاطيإ",
"LOCALE_4": "الأسبانية", "LOCALE_4": "ةينابسألا",
"LOCALE_5": "الروسية", "LOCALE_5": "ةيسورلا",
"LOCALE_6": "تلميع", "LOCALE_6": "عيملت",
"LOCALE_7": "البرتغالية", "LOCALE_7": "ةيلاغتربلا",
"LOCALE_8": "اليابانية", "LOCALE_8": "ةينابايلا",
"LOCALE_9": "الياباني (جزئي)", "LOCALE_9": ")يئزج( ينابايلا",
"LOCALE_10": "الصينية التقليدية", "LOCALE_10": "ةيديلقتلا ةينيصلا",
"LOCALE_11": "الصينية المبسطة", "LOCALE_11": "ةطسبملا ةينيصلا",
"LOCALE_12": "عربي", "LOCALE_12": "يبرع",
"LOCALE_13": "التشيكية", "LOCALE_13": "ةيكيشتلا",
"LOCALE_14": "الإسبانية (أمريكا اللاتينية)", "LOCALE_14": ")ةينيتاللا اكيرمأ( ةينابسإلا",
"LOCALE_15": "الكورية", "LOCALE_15": "ةيروكلا",
"LOCALE_16": "اللغة الإنجليزية (آمنة)", "LOCALE_16": ")ةنمآ( ةيزيلجنإلا ةغللا",
"LOCALE_17": "(جزئي) الروسية", "LOCALE_17": "ةيسورلا )يئزج(",
"LUA_MENU_FALLBACK_DISABLE": "ةيئدبملا طوطخلا عجرتسا",
"LUA_MENU_FALLBACK_ENABLE": "ةصّصخم طوطخ مدختسا",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": ".ﻡﺎﻬﻤﻟﺍ ﻊﻴﻤﺟ ﺢﺘﻓ", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "ﻓﺘﺢ ﺟﻤﻴﻊ ﺍﻟﻤﻬﺎﻡ.",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "ﺢﺘﻔﻟﺍ ءﺎﻐﻟﺇ" "LUA_MENU_CANCEL_UNLOCK_CAPS": "ﺇﻟﻐﺎء ﺍﻟﻔﺘﺢ"
} }

View File

@ -7,8 +7,8 @@
"LOCALE_5": "Ruština", "LOCALE_5": "Ruština",
"LOCALE_6": "Polština", "LOCALE_6": "Polština",
"LOCALE_7": "Portugalština", "LOCALE_7": "Portugalština",
"LOCALE_8": "Japonština (částečně)", "LOCALE_8": "Japonština",
"LOCALE_9": "Japonština", "LOCALE_9": "Japonština (částečně)",
"LOCALE_10": "Čínština (složité)", "LOCALE_10": "Čínština (složité)",
"LOCALE_11": "Čínština (zjednodušené)", "LOCALE_11": "Čínština (zjednodušené)",
"LOCALE_12": "Arabština", "LOCALE_12": "Arabština",
@ -17,6 +17,8 @@
"LOCALE_15": "Korejština", "LOCALE_15": "Korejština",
"LOCALE_16": "Angličtina (bezrizikový)", "LOCALE_16": "Angličtina (bezrizikový)",
"LOCALE_17": "Ruština (částečně)", "LOCALE_17": "Ruština (částečně)",
"LUA_MENU_FALLBACK_DISABLE": "Používat výchozí písma",
"LUA_MENU_FALLBACK_ENABLE": "Používat písma h2-mod",
"PRESENCE_SP_AF_CAVES": "Jako za starých časů", "PRESENCE_SP_AF_CAVES": "Jako za starých časů",
"PRESENCE_SP_AF_CAVES_SYSTEM_DIALOG": "Jako za starých časů", "PRESENCE_SP_AF_CAVES_SYSTEM_DIALOG": "Jako za starých časů",
"MENU_SP_AF_CAVES": "Jako za starých časů", "MENU_SP_AF_CAVES": "Jako za starých časů",
@ -210,7 +212,6 @@
"CONTINGENCY_LINE3": "Sgt. Gary 'Roach' Sanderson", "CONTINGENCY_LINE3": "Sgt. Gary 'Roach' Sanderson",
"CONTINGENCY_LINE4": "Task Force 141", "CONTINGENCY_LINE4": "Task Force 141",
"CONTINGENCY_LINE5": "14 mil SV od Petropavlovska, Rusko", "CONTINGENCY_LINE5": "14 mil SV od Petropavlovska, Rusko",
"CONTINGENCY_TIME_TO_ENTER_SUB": "CONTINGENCY_TIME_TO_ENTER_SUB",
"CONTINGENCY_OBJ_DEFEND_SUB": "Drž nepřátele od ponorky.", "CONTINGENCY_OBJ_DEFEND_SUB": "Drž nepřátele od ponorky.",
"CONTINGENCY_OBJ_ENTER_SUB": "Dostaň se k ponorce dříve než odpluje.", "CONTINGENCY_OBJ_ENTER_SUB": "Dostaň se k ponorce dříve než odpluje.",
"CONTINGENCY_OBJ_CONTROL_SUB": "Zmocni se ponorky.", "CONTINGENCY_OBJ_CONTROL_SUB": "Zmocni se ponorky.",
@ -569,7 +570,7 @@
"LUA_MENU_DEATHS_CAPS": "ÚMRTÍ", "LUA_MENU_DEATHS_CAPS": "ÚMRTÍ",
"LUA_MENU_DEFAULT": "Základní", "LUA_MENU_DEFAULT": "Základní",
"LUA_MENU_DEFENDS": "Obrana", "LUA_MENU_DEFENDS": "Obrana",
"LUA_MENU_DEFENDS_CAPS": "OBRANA", "LUA_MENU_DEFENDS_CAPS": "OBRANA",
"LUA_MENU_DIFFICULTY": "Obtížnost", "LUA_MENU_DIFFICULTY": "Obtížnost",
"LUA_MENU_DIFFICULTYCOMPLETED": "Dokončeno na", "LUA_MENU_DIFFICULTYCOMPLETED": "Dokončeno na",
"LUA_MENU_DISABLED": "Vypnuto", "LUA_MENU_DISABLED": "Vypnuto",
@ -4061,6 +4062,7 @@
"ELEVATOR_USE_HINT": "Stiskni a podrž &&1 pro použití výtahu.", "ELEVATOR_USE_HINT": "Stiskni a podrž &&1 pro použití výtahu.",
"ELEVATOR_FLOOR_SELECT_HINT": "Stiskni a podrž &&1 pro výběr podlaží.", "ELEVATOR_FLOOR_SELECT_HINT": "Stiskni a podrž &&1 pro výběr podlaží.",
"MENU_PASSWORD2": "Heslo:", "MENU_PASSWORD2": "Heslo:",
"PLATFORM_SAVE_AND_QUIT": "ULOŽIT A UKONČIT",
"PLATFORM_QUIT": "Ukončit", "PLATFORM_QUIT": "Ukončit",
"PLATFORM_BACK": "Zpět", "PLATFORM_BACK": "Zpět",
"PLATFORM_YES": "Ano", "PLATFORM_YES": "Ano",
@ -4101,6 +4103,7 @@
"MENU_YOU_MUST_SPECIFY_A_FILENAME": "Musíš zadat název souboru!", "MENU_YOU_MUST_SPECIFY_A_FILENAME": "Musíš zadat název souboru!",
"MENU_ARE_YOU_SURE_QUIT": "Opravdu chceš odejít?", "MENU_ARE_YOU_SURE_QUIT": "Opravdu chceš odejít?",
"MENU_QUIT_WARNING": "Opravdu chceš odejít?", "MENU_QUIT_WARNING": "Opravdu chceš odejít?",
"MENU_SAVEQUIT_TEXT": "Opravdu chceš odejít? Ztratíš veškerý postup dosažený od posledního checkpointu.",
"MENU_CONTROLS": "Ovladání", "MENU_CONTROLS": "Ovladání",
"MENU_CONTROLS_CAPS": "KLÁVESY", "MENU_CONTROLS_CAPS": "KLÁVESY",
"MENU_LOOK": "Pohled", "MENU_LOOK": "Pohled",
@ -4574,9 +4577,7 @@
"MENU_WARNING": "VAROVÁNÍ", "MENU_WARNING": "VAROVÁNÍ",
"MENU_CAPTURE_LIMIT": "Limit ukořistění: ", "MENU_CAPTURE_LIMIT": "Limit ukořistění: ",
"MENU_CONTINUE_RESTART": "Pokračovat v restartu?", "MENU_CONTINUE_RESTART": "Pokračovat v restartu?",
"MENU_RESTART_TEXT_1": "Pokud nyní restartuješ, ztratíš ", "MENU_RESTART_TEXT_1": "Pokud nyní restartuješ, ztratíš veškerý postup získaný v této misi.",
"MENU_RESTART_TEXT_2": "veškerý postup získaný ",
"MENU_RESTART_TEXT_3": "v této misi.",
"MENU_CONTINUE_SAVING": "Pokračovat v uložení?", "MENU_CONTINUE_SAVING": "Pokračovat v uložení?",
"MENU_SAVEQUIT_TEXT_1": "Pokud nyní uložíš hru, ", "MENU_SAVEQUIT_TEXT_1": "Pokud nyní uložíš hru, ",
"MENU_SAVEQUIT_TEXT_2": "ztratíš veškerý postup ", "MENU_SAVEQUIT_TEXT_2": "ztratíš veškerý postup ",
@ -5304,7 +5305,7 @@
"MENU_SP_CONTINUE_TO_SPECIAL_OPS": "Pokračovat do zvláštních operací", "MENU_SP_CONTINUE_TO_SPECIAL_OPS": "Pokračovat do zvláštních operací",
"MENU_SP_CONTINUE_TO_SPECIAL_OPS_CAPS": "POKRAČOVAT DO ZVLÁŠTNÍCH OPERACÍ", "MENU_SP_CONTINUE_TO_SPECIAL_OPS_CAPS": "POKRAČOVAT DO ZVLÁŠTNÍCH OPERACÍ",
"MENU_SP_CONTINUE_TO_MULTIPLAYER": "Pokračovat do Multiplayeru", "MENU_SP_CONTINUE_TO_MULTIPLAYER": "Pokračovat do Multiplayeru",
"MENU_SP_FOR_THE_RECORD": "„Udělej v tom pořádek“", "MENU_SP_FOR_THE_RECORD": "„Tohle jen pro pořádek“",
"MENU_SP_CHOOSE_A_DIFFERENT_OP": "Vybrat jinou operaci", "MENU_SP_CHOOSE_A_DIFFERENT_OP": "Vybrat jinou operaci",
"MENU_SP_NO_STARS_FOR_LOCKED_OP": "Nezískáš žádné hvězdy dokud si neodemkneš tuto operaci.", "MENU_SP_NO_STARS_FOR_LOCKED_OP": "Nezískáš žádné hvězdy dokud si neodemkneš tuto operaci.",
"MENU_SP_NOT_SIGNED_IN": "Nejsi přihlášen", "MENU_SP_NOT_SIGNED_IN": "Nejsi přihlášen",

View File

@ -12,11 +12,13 @@
"LOCALE_10": "Traditional Chinese", "LOCALE_10": "Traditional Chinese",
"LOCALE_11": "Simplified Chinese", "LOCALE_11": "Simplified Chinese",
"LOCALE_12": "Arabic", "LOCALE_12": "Arabic",
"LOCALE_13": "Czech", "LOCALE_13": "Czech\nOriginally translated by Ctihy\nPorted and corrected by VladWinner",
"LOCALE_14": "Spanish (Latin America)", "LOCALE_14": "Spanish (Latin America)",
"LOCALE_15": "Korean", "LOCALE_15": "Korean",
"LOCALE_16": "English (Safe)", "LOCALE_16": "English (Safe)",
"LOCALE_17": "Russian (Partial)", "LOCALE_17": "Russian (Partial)",
"LUA_MENU_FALLBACK_DISABLE": "Apply built-in fonts",
"LUA_MENU_FALLBACK_ENABLE": "Apply h2-mod fonts",
"UPDATER_POPUP_NO_UPDATES_AVAILABLE": "No updates available", "UPDATER_POPUP_NO_UPDATES_AVAILABLE": "No updates available",
"MENU_CCS_NEW_PATCH_NOTICE": "An update is available, proceed with installation?", "MENU_CCS_NEW_PATCH_NOTICE": "An update is available, proceed with installation?",

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Coréen", "LOCALE_15": "Coréen",
"LOCALE_16": "Anglais (sécuritaire)", "LOCALE_16": "Anglais (sécuritaire)",
"LOCALE_17": "Russe (partiel)", "LOCALE_17": "Russe (partiel)",
"LUA_MENU_FALLBACK_DISABLE": "Restaurer les polices par défaut",
"LUA_MENU_FALLBACK_ENABLE": "Utiliser les polices de h2-mod",
"UPDATER_POPUP_NO_UPDATES_AVAILABLE": "Aucune mise à jour disponible", "UPDATER_POPUP_NO_UPDATES_AVAILABLE": "Aucune mise à jour disponible",
"MENU_CCS_NEW_PATCH_NOTICE": "Une mise à jour est disponible,\npoursuivre l'installation ?", "MENU_CCS_NEW_PATCH_NOTICE": "Une mise à jour est disponible,\npoursuivre l'installation ?",

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Koreanisch", "LOCALE_15": "Koreanisch",
"LOCALE_16": "Englisch (Sicher)", "LOCALE_16": "Englisch (Sicher)",
"LOCALE_17": "Russisch (Untertitelt)", "LOCALE_17": "Russisch (Untertitelt)",
"LUA_MENU_FALLBACK_DISABLE": "Auf Vorgabeschriften zurücksetzen",
"LUA_MENU_FALLBACK_ENABLE": "h2-mod Schriften verwenden",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Alle Missionen freischalten", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Alle Missionen freischalten",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "Freischalten abbrechen" "LUA_MENU_CANCEL_UNLOCK_CAPS": "Freischalten abbrechen"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Coreano", "LOCALE_15": "Coreano",
"LOCALE_16": "Inglese (sicuro)", "LOCALE_16": "Inglese (sicuro)",
"LOCALE_17": "Russo (parziale)", "LOCALE_17": "Russo (parziale)",
"LUA_MENU_FALLBACK_DISABLE": "Ripristina caratteri predefiniti",
"LUA_MENU_FALLBACK_ENABLE": "Usare caratteri di h2-mod",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Sblocca tutte le missioni", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Sblocca tutte le missioni",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "Annulla sblocco", "LUA_MENU_CANCEL_UNLOCK_CAPS": "Annulla sblocco",

View File

@ -17,6 +17,8 @@
"LOCALE_15": "韓国語", "LOCALE_15": "韓国語",
"LOCALE_16": "英語(検閲)", "LOCALE_16": "英語(検閲)",
"LOCALE_17": "ロシア語(一部)", "LOCALE_17": "ロシア語(一部)",
"LUA_MENU_FALLBACK_DISABLE": "デフォルトに戻す",
"LUA_MENU_FALLBACK_ENABLE": "h2-mod フォントを使用します",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "全ミッションをアンロック", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "全ミッションをアンロック",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "アンロックをキャンセル" "LUA_MENU_CANCEL_UNLOCK_CAPS": "アンロックをキャンセル"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "韓国語", "LOCALE_15": "韓国語",
"LOCALE_16": "英語(検閲)", "LOCALE_16": "英語(検閲)",
"LOCALE_17": "ロシア語(一部)", "LOCALE_17": "ロシア語(一部)",
"LUA_MENU_FALLBACK_DISABLE": "デフォルトに戻す",
"LUA_MENU_FALLBACK_ENABLE": "h2-mod フォントを使用します",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "全ミッションをアンロック", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "全ミッションをアンロック",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "アンロックをキャンセル" "LUA_MENU_CANCEL_UNLOCK_CAPS": "アンロックをキャンセル"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "한국어", "LOCALE_15": "한국어",
"LOCALE_16": "영어(검열)", "LOCALE_16": "영어(검열)",
"LOCALE_17": "러시아어(일부)", "LOCALE_17": "러시아어(일부)",
"LUA_MENU_FALLBACK_DISABLE": "기본 글꼴로 되돌리기",
"LUA_MENU_FALLBACK_ENABLE": "h2-mod 글꼴 사용",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "모든 임무 잠금 해제", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "모든 임무 잠금 해제",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "잠금 해제 취소" "LUA_MENU_CANCEL_UNLOCK_CAPS": "잠금 해제 취소"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Koreański", "LOCALE_15": "Koreański",
"LOCALE_16": "Angielski (cenzuralny)", "LOCALE_16": "Angielski (cenzuralny)",
"LOCALE_17": "Rosyjski (częściowy)", "LOCALE_17": "Rosyjski (częściowy)",
"LUA_MENU_FALLBACK_DISABLE": "Przywróć wbudowane czcionki",
"LUA_MENU_FALLBACK_ENABLE": "Aplikuj h2-mod czcionki",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Odblokuj wszystkie misje", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Odblokuj wszystkie misje",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "Anuluj odblokowanie" "LUA_MENU_CANCEL_UNLOCK_CAPS": "Anuluj odblokowanie"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Coreano", "LOCALE_15": "Coreano",
"LOCALE_16": "Inglês (Censurado)", "LOCALE_16": "Inglês (Censurado)",
"LOCALE_17": "Russo (Parcial)", "LOCALE_17": "Russo (Parcial)",
"LUA_MENU_FALLBACK_DISABLE": "Repor fontes predefinidas",
"LUA_MENU_FALLBACK_ENABLE": "Usar fontes do h2-mod",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Desbloquear todas as missões", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Desbloquear todas as missões",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "Cancelar desbloqueio" "LUA_MENU_CANCEL_UNLOCK_CAPS": "Cancelar desbloqueio"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Корейский", "LOCALE_15": "Корейский",
"LOCALE_16": "Английский цензурный", "LOCALE_16": "Английский цензурный",
"LOCALE_17": "Русский (английская озвучка)", "LOCALE_17": "Русский (английская озвучка)",
"LUA_MENU_FALLBACK_DISABLE": "Вернуться к встроенным шрифтам",
"LUA_MENU_FALLBACK_ENABLE": "Применить шрифты от h2-mod",
"UPDATER_POPUP_NO_UPDATES_AVAILABLE": "У вас установлены все последние обновления", "UPDATER_POPUP_NO_UPDATES_AVAILABLE": "У вас установлены все последние обновления",
"MENU_CCS_NEW_PATCH_NOTICE": "Доступно обновление клиента игры,\nначать установку сейчас?", "MENU_CCS_NEW_PATCH_NOTICE": "Доступно обновление клиента игры,\nначать установку сейчас?",

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Корейский", "LOCALE_15": "Корейский",
"LOCALE_16": "Английский цензурный", "LOCALE_16": "Английский цензурный",
"LOCALE_17": "Русский (английская озвучка)", "LOCALE_17": "Русский (английская озвучка)",
"LUA_MENU_FALLBACK_DISABLE": "Вернуться к встроенным шрифтам",
"LUA_MENU_FALLBACK_ENABLE": "Применить шрифты от h2-mod",
"UPDATER_POPUP_NO_UPDATES_AVAILABLE": "У вас установлены все последние обновления", "UPDATER_POPUP_NO_UPDATES_AVAILABLE": "У вас установлены все последние обновления",
"MENU_CCS_NEW_PATCH_NOTICE": "Доступно обновление клиента игры,\nначать установку сейчас?", "MENU_CCS_NEW_PATCH_NOTICE": "Доступно обновление клиента игры,\nначать установку сейчас?",

View File

@ -17,6 +17,8 @@
"LOCALE_15": "韩语", "LOCALE_15": "韩语",
"LOCALE_16": "英语 (审查制度)", "LOCALE_16": "英语 (审查制度)",
"LOCALE_17": "俄语(拉丁美洲)", "LOCALE_17": "俄语(拉丁美洲)",
"LUA_MENU_FALLBACK_DISABLE": "恢复为默认字体",
"LUA_MENU_FALLBACK_ENABLE": "使用 h2-mod 字体",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "解锁全部任务", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "解锁全部任务",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "取消解锁" "LUA_MENU_CANCEL_UNLOCK_CAPS": "取消解锁"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Coreano", "LOCALE_15": "Coreano",
"LOCALE_16": "Inglés (censura)", "LOCALE_16": "Inglés (censura)",
"LOCALE_17": "Ruso (parcial)", "LOCALE_17": "Ruso (parcial)",
"LUA_MENU_FALLBACK_DISABLE": "Restaurar tipografías predeterminadas",
"LUA_MENU_FALLBACK_ENABLE": "Usar tipografías de h2-mod",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Desbloquear todas las misiones", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Desbloquear todas las misiones",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "Cancelar desbloqueo" "LUA_MENU_CANCEL_UNLOCK_CAPS": "Cancelar desbloqueo"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "Coreano", "LOCALE_15": "Coreano",
"LOCALE_16": "Inglés (censura)", "LOCALE_16": "Inglés (censura)",
"LOCALE_17": "Ruso (parcial)", "LOCALE_17": "Ruso (parcial)",
"LUA_MENU_FALLBACK_DISABLE": "Restaurar tipografías predeterminadas",
"LUA_MENU_FALLBACK_ENABLE": "Usar tipografías de h2-mod",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Desbloquear todas las misiones", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "Desbloquear todas las misiones",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "Cancelar desbloqueo" "LUA_MENU_CANCEL_UNLOCK_CAPS": "Cancelar desbloqueo"

View File

@ -17,6 +17,8 @@
"LOCALE_15": "韓文", "LOCALE_15": "韓文",
"LOCALE_16": "英文 (審查制度)", "LOCALE_16": "英文 (審查制度)",
"LOCALE_17": "俄文(部份)", "LOCALE_17": "俄文(部份)",
"LUA_MENU_FALLBACK_DISABLE": "還原為預設字型",
"LUA_MENU_FALLBACK_ENABLE": "使用 h2-mod 字型",
"LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "解鎖所有任務", "LUA_MENU_CAMPAIGN_UNLOCKED_ALL_TITLE": "解鎖所有任務",
"LUA_MENU_CANCEL_UNLOCK_CAPS": "取消解鎖" "LUA_MENU_CANCEL_UNLOCK_CAPS": "取消解鎖"

View File

@ -32,6 +32,7 @@ namespace config
std::unordered_map<std::string, field_definition_t> field_definitions = std::unordered_map<std::string, field_definition_t> field_definitions =
{ {
{define_field("disable_custom_fonts", field_type::boolean, false)},
{define_field("language", field_type::string, language::get_default_language(), language::is_valid_language)}, {define_field("language", field_type::string, language::get_default_language(), language::is_valid_language)},
}; };

View File

@ -60,9 +60,9 @@ namespace filesystem
paths.push_back(path / "fallback"); paths.push_back(path / "fallback");
} }
if (language::is_polrus() || language::is_arabic()) if (language::is_slavic() || language::is_arabic())
{ {
paths.push_back(path / "polrus"); paths.push_back(path / "slavic");
} }
paths.push_back(path / code); paths.push_back(path / code);

View File

@ -82,6 +82,12 @@ namespace fonts
loaded = true; loaded = true;
auto& replacements = get_font_replacements(); auto& replacements = get_font_replacements();
const auto disabled = config::get<bool>("disable_custom_fonts");
if (disabled.has_value() && disabled.value() && language::current() != game::LANGUAGE_CZECH)
{
return;
}
const auto table = get_font_replacements_table(); const auto table = get_font_replacements_table();
if (table == nullptr) if (table == nullptr)
{ {

View File

@ -30,7 +30,7 @@ namespace language
{game::LANGUAGE_RUSSIAN_PARTIAL}, {game::LANGUAGE_RUSSIAN_PARTIAL},
}; };
std::unordered_set<game::language_t> polish_russian_languages = std::unordered_set<game::language_t> slavic_languages =
{ {
{game::LANGUAGE_RUSSIAN}, {game::LANGUAGE_RUSSIAN},
{game::LANGUAGE_POLISH}, {game::LANGUAGE_POLISH},
@ -44,6 +44,7 @@ namespace language
{game::LANGUAGE_JAPANESE_PARTIAL}, {game::LANGUAGE_JAPANESE_PARTIAL},
{game::LANGUAGE_TRADITIONAL_CHINESE}, {game::LANGUAGE_TRADITIONAL_CHINESE},
{game::LANGUAGE_SIMPLIFIED_CHINESE}, {game::LANGUAGE_SIMPLIFIED_CHINESE},
{game::LANGUAGE_KOREAN},
}; };
std::unordered_set<game::language_t> custom_languages = std::unordered_set<game::language_t> custom_languages =
@ -109,9 +110,9 @@ namespace language
return non_latin_languages.contains(current()); return non_latin_languages.contains(current());
} }
bool is_polrus() bool is_slavic()
{ {
return polish_russian_languages.contains(current()); return slavic_languages.contains(current());
} }
bool is_arabic() bool is_arabic()

View File

@ -13,7 +13,7 @@ namespace language
game::language_t current(); game::language_t current();
bool is_non_latin(); bool is_non_latin();
bool is_polrus(); bool is_slavic();
bool is_arabic(); bool is_arabic();
bool is_asian(); bool is_asian();
} }

View File

@ -234,6 +234,14 @@ namespace ui_scripting
lua["io"]["readfile"] = filesystem::safe_io_func<std::string>( lua["io"]["readfile"] = filesystem::safe_io_func<std::string>(
static_cast<std::string(*)(const std::string&)>(utils::io::read_file)); static_cast<std::string(*)(const std::string&)>(utils::io::read_file));
auto language_table = table();
language_table["isnonlatin"] = language::is_non_latin;
language_table["isslavic"] = language::is_slavic;
language_table["isarabic"] = language::is_arabic;
language_table["isasian"] = language::is_asian;
lua["language"] = language_table;
using game = table; using game = table;
auto game_type = game(); auto game_type = game();
lua["game"] = game_type; lua["game"] = game_type;