--[[ Babylonian A sub-addon that manages the locales for other addons. 3.6.1 (Platypus) $Id: Babylonian.lua 854 2006-05-10 04:23:18Z mentalpower $ License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program(see GPL.txt); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]] local self = {} if (not self.update) then self.update = {}; end --Local function prototypes local split, setOrder, getOrder, fetchString, getString, registerAddOn function split(str, at) local splut = {} if (type(str) ~= "string") then return nil end if (not str) then str = "" end if (not at) then table.insert(splut, str) else for n, c in string.gfind(str, '([^%'..at..']*)(%'..at..'?)') do table.insert(splut, n); if (c == '') then break end end end return splut end function setOrder(order) if (not order) then self.order = {} else self.order = split(order, ",") end table.insert(self.order, GetLocale()) table.insert(self.order, "enUS") if not(self.order[1] == getOrder()) then SetCVar("BabylonianOrder", order) end SetCVar("BabylonianOrder", order) end function getOrder() return GetCVar("BabylonianOrder") end function fetchString(stringTable, locale, stringKey) if (type(stringTable)=="table" and type(stringTable[locale])=="table" and stringTable[locale][stringKey]) then return stringTable[locale][stringKey] end end function getString(stringTable, stringKey, default) local val for i=1, table.getn(self.order) do val = fetchString(stringTable, self.order[i], stringKey) if (val) then return val end end return default end if (not Babylonian) then Babylonian = { ['SetOrder'] = setOrder, ['GetOrder'] = getOrder, ['GetString'] = getString, ['FetchString'] = fetchString, } RegisterCVar("BabylonianOrder", "") setOrder(getOrder()) end