57 lines
1.6 KiB
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
|
|
|