vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
        Enchantrix Addon for World of Warcraft(tm).
        Version: 3.6.1 (Platypus)
        Revision: $Id: EnxLocale.lua 944 2006-07-11 03:31:50Z mentalpower $

        Localization routines

        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 GLP.txt); if not, write to the Free Software
                Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
]]

-- Global functions
local addonLoaded                       -- Enchantrix.Locale.AddonLoaded()
local delocalizeFilterVal       -- Enchantrix.Locale.DelocalizeFilterVal()
local localizeFilterVal         -- Enchantrix.Locale.LocalizeFilterVal()
local getLocalizedFilterVal     -- Enchantrix.Locale.GetLocalizedFilterVal()
local delocalizeCommand         -- Enchantrix.Locale.DelocalizeCommand()
local localizeCommand           -- Enchantrix.Locale.LocalizeCommand()

-- Local functions
local buildCommandMap
local getLocalizedCmdString

local customLocalizations = {
        ['TextGeneral'] = GetLocale(),
        ['TextCombat'] = GetLocale(),
        ['ArgSpellname'] = GetLocale(),
        ['PatReagents'] = GetLocale(),
}

Enchantrix.State.Locale_Changed = true --This needs to be initialy set to true so that the following tables get built at startup.
local commandMap, commandMapRev;

function addonLoaded()
        buildCommandMap()
end

function _ENCH(stringKey, locale)
        if locale then
                if type(locale) == "string" then
                        return Babylonian.FetchString(EnchantrixLocalizations, locale, stringKey)
                else
                        return Babylonian.FetchString(EnchantrixLocalizations, GetLocale(), stringKey)
                end
        elseif (customLocalizations[stringKey]) then
                return Babylonian.FetchString(EnchantrixLocalizations, customLocalizations[stringKey], stringKey)
        else
                return Babylonian.GetString(EnchantrixLocalizations, stringKey)
        end
end

function buildCommandMap()
        commandMap = {}
        commandMapRev = {}

        commandMap = {
                [_ENCH('CmdOn')] = 'on',
                [_ENCH('CmdOff')] = 'off',
                [_ENCH('CmdBarker')] = 'barker',
                [_ENCH('CmdHelp')] = 'help',
                [_ENCH('CmdToggle')] = 'toggle',
                [_ENCH('CmdDisable')] = 'disable',
                [_ENCH('CmdClear')] = 'clear',
                [_ENCH('CmdLocale')] = 'locale',
                [_ENCH('CmdDefault')] = 'default',
                [_ENCH('CmdPrintin')] = 'print-in',
                [_ENCH('CmdFindBidauct')] = 'bidbroker',
                [_ENCH('CmdFindBidauctShort')] = 'bidbroker',
                [_ENCH('CmdFindBuyauct')] = 'percentless',
                [_ENCH('CmdFindBuyauctShort')] = 'percentless',
                [_ENCH('ShowEmbed')] = 'embed',
                [_ENCH('ShowCount')] = 'counts',
                [_ENCH('ShowTerse')] = 'terse',
                [_ENCH('ShowValue')] = 'valuate',
                [_ENCH('ShowGuessAuctioneerHsp')] = 'valuate-hsp',
                [_ENCH('ShowGuessAuctioneerMed')] = 'valuate-median',
                [_ENCH('ShowGuessBaseline')] = 'valuate-baseline',
        }

        for k, v in pairs(commandMap) do
                commandMapRev[v] = k
        end
end

function getLocalizedCmdString(value)
        return _ENCH('Cmd'..string.upper(string.sub(value,1,1))..string.sub(value,2))
end

function delocalizeFilterVal(value)
        if value == _ENCH('CmdOn') then
                return 'on'
        elseif value == _ENCH('CmdOff') then
                return 'off'
        elseif value == _ENCH('CmdDefault') then
                return 'default'
        elseif value == _ENCH('CmdToggle') then
                return 'toggle'
        else
                return value
        end
end

function localizeFilterVal(value)
        if (value == 'on') or (value == true) then
                return _ENCH("CmdOn")
        elseif (value == 'off') or (value == false) then
                return _ENCH("CmdOff")
        elseif (value == 'default') or (value == nil) then
                return _ENCH("CmdDefault")
        else
                return value
        end
end

function getLocalizedFilterVal(key)
        return localizeFilterVal(Enchantrix.Config.GetFilter(key))
end

-- Turns a localized slash command into the generic English version of the command
function delocalizeCommand(cmd)
        if Enchantrix.State.Locale_Changed then
                buildCommandMap()
                Enchantrix.State.Locale_Changed = nil
        end
        return commandMap[cmd] or cmd
end

-- Translate a generic English slash command to the localized version, if available
function localizeCommand(cmd)
        if Enchantrix.State.Locale_Changed then
                buildCommandMap()
                Enchantrix.State.Locale_Changed = nil
        end
        return commandMapRev[cmd] or cmd
end

Enchantrix.Locale = {
        Revision = "$Revision: 944 $",

        AddonLoaded                             = addonLoaded,

        DelocalizeFilterVal             = delocalizeFilterVal,
        LocalizeFilterVal               = localizeFilterVal,
        GetLocalizedFilterVal   = getLocalizedFilterVal,
        DelocalizeCommand               = delocalizeCommand,
        LocalizeCommand                 = localizeCommand,
}