balatro-mods/Cartomancer/internal/localization.lua

57 lines
1.6 KiB
Lua

if Cartomancer.use_smods() then return end
-- Credits: Steamodded
-- I was lazy and it's not like I'm going to code anything different from this anyways~
local function recurse(target, ref_table)
if type(target) ~= 'table' then return end --this shouldn't happen unless there's a bad return value
for k, v in pairs(target) do
if not ref_table[k] or (type(v) ~= 'table') then
ref_table[k] = v
else
recurse(v, ref_table[k])
end
end
end
local function add_defaults(default_table, target_table)
if type(default_table) ~= 'table' then return end
for k, v in pairs(default_table) do
if target_table[k] then
if type(v) == "table" then
add_defaults(v, target_table[k])
end
else
target_table[k] = v
end
end
end
local function load_localization()
local default_table = Cartomancer.load_mod_file('localization/en-us.lua', 'cartomancer.localization')
local loc_file = Cartomancer.path.."/localization/"..G.SETTINGS.language..".lua"
local loc_table
if Cartomancer.nfs.fileExists(loc_file) then
loc_table = load(Cartomancer.nfs.read(loc_file), "Cartomancer - Localization")()
-- Use english strings for missing localization strings
if G.SETTINGS.language ~= "en-us" then
add_defaults(default_table, loc_table)
end
else
loc_table = default_table
end
recurse(loc_table, G.localization)
end
load_localization()
local init_localization_ref = init_localization
function init_localization(...)
load_localization()
return init_localization_ref(...)
end