local L = DBM_CORE_L local returnKey = { __index = function(_, k) return k end } local defaultCatLocalization = { __index = setmetatable({ timer = L.OPTION_CATEGORY_TIMERS, announce = L.OPTION_CATEGORY_WARNINGS, announceother = L.OPTION_CATEGORY_WARNINGS_OTHER, announcepersonal = L.OPTION_CATEGORY_WARNINGS_YOU, announcerole = L.OPTION_CATEGORY_WARNINGS_ROLE, specialannounce = L.OPTION_CATEGORY_SPECWARNINGS, sound = L.OPTION_CATEGORY_SOUNDS, yell = L.OPTION_CATEGORY_YELLS, icon = L.OPTION_CATEGORY_ICONS, nameplate = L.OPTION_CATEGORY_NAMEPLATES, misc = MISCELLANEOUS }, returnKey) } local defaultTimerLocalization = { __index = setmetatable({ timer_berserk = L.GENERIC_TIMER_BERSERK, timer_combat = L.GENERIC_TIMER_COMBAT }, returnKey) } local defaultAnnounceLocalization = { __index = setmetatable({ warning_berserk = L.GENERIC_WARNING_BERSERK }, returnKey) } local defaultOptionLocalization = { __index = setmetatable({ timer_berserk = L.OPTION_TIMER_BERSERK, timer_combat = L.OPTION_TIMER_COMBAT, }, returnKey) } local defaultMiscLocalization = { __index = {} } local modLocalizationPrototype = {} function modLocalizationPrototype:SetGeneralLocalization(t) for i, v in pairs(t) do self.general[i] = v end end function modLocalizationPrototype:SetWarningLocalization(t) for i, v in pairs(t) do self.warnings[i] = v end end function modLocalizationPrototype:SetTimerLocalization(t) for i, v in pairs(t) do self.timers[i] = v end end function modLocalizationPrototype:SetOptionLocalization(t) for i, v in pairs(t) do self.options[i] = v end end function modLocalizationPrototype:SetOptionCatLocalization(t) for i, v in pairs(t) do self.cats[i] = v end end function modLocalizationPrototype:SetMiscLocalization(t) for i, v in pairs(t) do self.miscStrings[i] = v end end local modLocalizations = {} function DBM:CreateModLocalization(name) name = tostring(name) local obj = { general = setmetatable({}, returnKey), warnings = setmetatable({}, defaultAnnounceLocalization), options = setmetatable({}, defaultOptionLocalization), timers = setmetatable({}, defaultTimerLocalization), miscStrings = setmetatable({}, defaultMiscLocalization), cats = setmetatable({}, defaultCatLocalization), } setmetatable(obj, { __index = modLocalizationPrototype }) modLocalizations[name] = obj return obj end function DBM:GetModLocalization(name) name = tostring(name) return modLocalizations[name] or self:CreateModLocalization(name) end