Mercurial > wow > askmrrobot
changeset 11:ece9167c0d1c v1.2.14.0
Localization support, combat log features (wipe command, aura/pet tracking, and realm detection).
author | yellowfive |
---|---|
date | Thu, 10 Jul 2014 12:24:59 -0700 |
parents | ef8b45e96b08 |
children | a7bc121c536d |
files | AskMrRobot.lua AskMrRobot.toc AskMrRobotUi.lua config.lua localization/localization.de.lua localization/localization.en.lua ui/CombatLogTab.lua ui/Components.lua ui/EnchantTab.lua ui/ExportTab.lua ui/FontString.lua ui/GemTab.lua ui/HelpTab.lua ui/ImportTab.lua ui/ReforgesTab.lua ui/RobotStamp.lua ui/ScrollFrame.lua ui/ShoppingListTab.lua ui/SummaryTab.lua wait.lua |
diffstat | 20 files changed, 1755 insertions(+), 306 deletions(-) [+] |
line wrap: on
line diff
--- a/AskMrRobot.lua Wed May 21 00:01:02 2014 -0500 +++ b/AskMrRobot.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; AskMrRobot.eventListener = CreateFrame("FRAME"); -- Need a frame to respond to events AskMrRobot.eventListener:RegisterEvent("ADDON_LOADED"); -- Fired when saved variables are loaded @@ -12,6 +13,7 @@ AskMrRobot.eventListener:RegisterEvent("CONFIRM_TALENT_WIPE"); AskMrRobot.eventListener:RegisterEvent("PLAYER_TALENT_UPDATE"); AskMrRobot.eventListener:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED"); +AskMrRobot.eventListener:RegisterEvent("PLAYER_ENTERING_WORLD"); AskMrRobot.eventListener:RegisterEvent("PLAYER_LOGOUT"); -- Fired when about to log out AskMrRobot.eventListener:RegisterEvent("PLAYER_LEVEL_UP"); --AskMrRobot.eventListener:RegisterEvent("GET_ITEM_INFO_RECEIVED") @@ -20,8 +22,8 @@ AskMrRobot.eventListener:RegisterEvent("SOCKET_INFO_CLOSE") AskMrRobot.eventListener:RegisterEvent("BAG_UPDATE") AskMrRobot.eventListener:RegisterEvent("ITEM_UNLOCKED") ---AskMrRobot.eventListener:RegisterEvent("PLAYER_REGEN_DISABLED") -AskMrRobot.eventListener:RegisterEvent("ENCOUNTER_START") +AskMrRobot.eventListener:RegisterEvent("PLAYER_REGEN_DISABLED") +--AskMrRobot.eventListener:RegisterEvent("ENCOUNTER_START") AskMrRobot.eventListener:RegisterEvent("CHAT_MSG_ADDON") AskMrRobot.eventListener:RegisterEvent("UPDATE_INSTANCE_INFO") AskMrRobot.eventListener:RegisterEvent("PLAYER_DIFFICULTY_CHANGED") @@ -50,6 +52,22 @@ ThroneOfThunder = 1098 } +-- instances that we currently support logging for +AskMrRobot.supportedInstanceIds = { + [1136] = true +} + +-- returns true if currently in a supported instance +function AskMrRobot.IsSupportedInstance() + + local zone, _, difficultyIndex, _, _, _, _, instanceMapID = GetInstanceInfo() + if AskMrRobot.supportedInstanceIds[tonumber(instanceMapID)] then + return true + else + return false + end +end + -- upgrade id -> upgrade level local upgradeTable = { [0] = 0, @@ -96,7 +114,9 @@ [497] = 3, [498] = 4, [504] = 3, - [505] = 4 + [505] = 4, + [506] = 5, + [507] = 6 } local professionIds = { @@ -156,7 +176,7 @@ if event == "ADDON_LOADED" then local addon = select(1, ...) if (addon == "AskMrRobot") then - print("Loaded Ask Mr. Robot " .. GetAddOnMetadata(AskMrRobot.AddonName, "Version")) + print(L.AMR_ON_EVENT_LOADED.format(GetAddOnMetadata(AskMrRobot.AddonName, "Version"))) -- listen for messages from other AMR addons RegisterAddonMessagePrefix(AskMrRobot.ChatPrefix) @@ -164,11 +184,7 @@ AmrRealmName = GetRealmName() AmrCharacterName = UnitName("player") - if not AmrLogData then AmrLogData = {} end - if not AmrLogData._autoLog then AmrLogData._autoLog = {} end - if not AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] then - AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "disabled" - end + AskMrRobot.CombatLogTab.InitializeVariable() if not AmrIconInfo then AmrIconInfo = {} end if not AmrBankItems then AmrBankItems = {} end @@ -180,6 +196,10 @@ if not AmrBankItemsAndCounts then AmrBankItemsAndCounts = {} end if not AmrImportString then AmrImportString = "" end if not AmrImportDate then AmrImportDate = "" end + + if not AmrSettings then AmrSettings = {} end + if not AmrSettings.Logins then AmrSettings.Logins = {} end + if not AmrSendSettings then AmrSendSettings = { SendGems = true, @@ -195,8 +215,9 @@ text = "Ask Mr. Robot", icon = "Interface\\AddOns\\AskMrRobot\\Media\\icon", OnClick = function() - - if IsModifiedClick("CHATLINK") then + if IsControlKeyDown() then + AskMrRobot_ReforgeFrame.combatLogTab:LogWipe() + elseif IsModifiedClick("CHATLINK") then OnExport() else AskMrRobot_ReforgeFrame:Toggle() @@ -205,7 +226,7 @@ OnTooltipShow = function(tt) tt:AddLine("Ask Mr. Robot", 1, 1, 1); tt:AddLine(" "); - tt:AddLine("Left Click to open the Ask Mr. Robot window.\n\nShift + Left Click to export your bag and bank data.") + tt:AddLine(L.AMR_ON_EVENT_TOOLTIP) end }); @@ -246,13 +267,51 @@ AskMrRobot.On_ITEM_UNLOCKED() elseif event == "PLAYER_LOGOUT" then -- doing nothing right now, but leaving this in case we need something here - elseif event == "ENCOUNTER_START" then - -- send data about this character when a boss fight starts - AskMrRobot.SaveAll() - AskMrRobot.ExportToAddonChat(time()) + elseif event == "PLAYER_ENTERING_WORLD" then + + -- delete entries that are more than 10 days old to prevent the table from growing indefinitely + local now = time() + local oldDuration = 60 * 60 * 24 * 10 + local entryTime + repeat + -- parse entry and get time + local parts = {} + for part in string.gmatch(AmrSettings.Logins[1], "([^;]+)") do + tinsert(parts, part) + end + entryTime = tonumber(parts[3]) + + -- entries are in order, remove first entry if it is old + if difftime(now, entryTime) > oldDuration then + tremove(AmrSettings.Logins, 1) + end + until #AmrSettings.Logins == 0 or difftime(now, entryTime) <= oldDuration + + -- record the time a player logs in, used to figure out which player logged which parts of their log file + local key = AmrRealmName .. ";" .. AmrCharacterName .. ";" + local loginData = key .. time() + if AmrSettings.Logins and #AmrSettings.Logins > 0 then + local last = AmrSettings.Logins[#AmrSettings.Logins] + if string.len(last) >= string.len(key) and string.sub(last, 1, string.len(key)) ~= key then + table.insert(AmrSettings.Logins, loginData) + end + else + table.insert(AmrSettings.Logins, loginData) + end + + elseif event == "PLAYER_REGEN_DISABLED" then + + -- send data about this character when a player enters combat in a supported zone + if AskMrRobot.IsSupportedInstance() then + local t = time() + AskMrRobot.SaveAll() + AskMrRobot.ExportToAddonChat(t) + AskMrRobot.ExportLoggingData(t) + end + elseif event == "CHAT_MSG_ADDON" then local chatPrefix, message = select(1, ...) - local isLogging = AskMrRobot_ReforgeFrame.combatLogTab:IsLogging() + local isLogging = AskMrRobot_ReforgeFrame.combatLogTab:IsLogging() if (isLogging and chatPrefix == AskMrRobot.ChatPrefix) then AskMrRobot_ReforgeFrame.combatLogTab:ReadAddonMessage(message) end @@ -287,12 +346,12 @@ AskMrRobot_ReforgeFrame:Hide() elseif msg == 'export' then OnExport() + elseif msg == 'wipe' then + AskMrRobot_ReforgeFrame.combatLogTab:LogWipe() + elseif msg == 'unwipe' then + AskMrRobot_ReforgeFrame.combatLogTab:LogUnwipe() else - print('Available AskMrRobot slash commands:\n' .. - ' /amr show -- show the main window\n' .. - ' /amr hide -- hide the main window\n' .. - ' /amr toggle -- toggle the main window\n' .. - ' /amr export -- export bag and bank data (uses your last selected method and either opens the copy/paste window, or saves and reloads ui)') + print(L.AMR_SLASH_COMMAND_TEXT_1 .. L.AMR_SLASH_COMMAND_TEXT_2 .. L.AMR_SLASH_COMMAND_TEXT_3 .. L.AMR_SLASH_COMMAND_TEXT_4 .. L.AMR_SLASH_COMMAND_TEXT_5 .. L.AMR_SLASH_COMMAND_TEXT_6 .. L.AMR_SLASH_COMMAND_TEXT_7) end end @@ -313,18 +372,24 @@ local function InitIcon() icon = LibStub("LibDBIcon-1.0"); - icon:Register("AskMrRobot", amrLDB, AmrIconInfo); + icon:Register("AskMrRobot", amrLDB, AmrIconInfo); end -function AskMrRobot.AmrUpdateMinimap() - if (AmrOptions.hideMapIcon) then - if (icon) then +function AskMrRobot.AmrUpdateMinimap() + if AmrOptions.hideMapIcon then + if icon then icon:Hide("AskMrRobot"); end else - if (not icon) then + if not icon then InitIcon() end + --if AskMrRobot_ReforgeFrame.combatLogTab:IsLogging() then + if AskMrRobot.CombatLogTab.IsLogging(nil) then + amrLDB.icon = 'Interface\\AddOns\\AskMrRobot\\Media\\icon_green' + else + amrLDB.icon = 'Interface\\AddOns\\AskMrRobot\\Media\\icon' + end icon:Show("AskMrRobot"); end end @@ -722,13 +787,15 @@ local profs = {} local noprofs = true - for k, v in pairs(AmrProfessions) do - local profval = professionIds[k] - if profval ~= nil then - noprofs = false - table.insert(profs, profval .. ":" .. v) - end - end + if AmrProfessions then + for k, v in pairs(AmrProfessions) do + local profval = professionIds[k] + if profval ~= nil then + noprofs = false + table.insert(profs, profval .. ":" .. v) + end + end + end if noprofs then table.insert(profs, "0:0") @@ -750,26 +817,32 @@ -- convert items to parsed objects, sorted by id local itemObjects = {} - for k, v in pairs(AmrEquipedItems) do - local itemData = parseItemLink(v) - itemData.slot = k - table.insert(itemObjects, itemData) - end + if AmrEquipedItems then + for k, v in pairs(AmrEquipedItems) do + local itemData = parseItemLink(v) + itemData.slot = k + table.insert(itemObjects, itemData) + end + end -- if desired, include bank/bag items too if includeInventory then - for i, v in ipairs(AmrBagItems) do - local itemData = parseItemLink(v) - if itemData.itemId ~= nil then - table.insert(itemObjects, itemData) - end - end - for i, v in ipairs(AmrBankItems) do - local itemData = parseItemLink(v) - if itemData.itemId ~= nil then - table.insert(itemObjects, itemData) - end - end + if AmrBagItems then + for i, v in ipairs(AmrBagItems) do + local itemData = parseItemLink(v) + if itemData.itemId ~= nil then + table.insert(itemObjects, itemData) + end + end + end + if AmrBankItems then + for i, v in ipairs(AmrBankItems) do + local itemData = parseItemLink(v) + if itemData.itemId ~= nil then + table.insert(itemObjects, itemData) + end + end + end end -- sort by item id so we can compress it more easily @@ -809,22 +882,82 @@ table.insert(fields, table.concat(itemParts, "")) end - + return "$" .. table.concat(fields, ";") .. "$" end +local function GetPlayerExtraData(data, index) + + local unitId = "raid" .. index + + local guid = UnitGUID(unitId) + if guid == nil then + return nil + end + + local fields = {} + + local buffs = {} + for i=1,40 do + local _,_,_,count,_,_,_,_,_,_,spellId = UnitAura(unitId, i, "HELPFUL") + table.insert(buffs, spellId) + end + if #buffs == 0 then + table.insert(fields, "_") + else + table.insert(fields, toCompressedNumberList(buffs)) + end + + local petGuid = UnitGUID("raidpet" .. index) + if petGuid then + table.insert(fields, guid .. "," .. petGuid) + else + table.insert(fields, '_') + end + + local name = GetRaidRosterInfo(index) + local realm = GetRealmName() + local splitPos = string.find(name, "-") + if splitPos ~= nil then + realm = string.sub(name, splitPos + 1) + name = string.sub(name, 1, splitPos - 1) + end + + data[realm .. ":" .. name] = table.concat(fields, ";") +end + +function AskMrRobot.ExportLoggingData(timestamp) + + local isLogging = AskMrRobot_ReforgeFrame.combatLogTab:IsLogging() + if not isLogging then + return + end + + -- we only get extra information for people if in a raid + if not IsInRaid() then + return + end + + local data = {} + for i = 1,40 do + GetPlayerExtraData(data, i) + end + + AskMrRobot.CombatLogTab.SaveExtras(data, timestamp) +end + function AskMrRobot.ExportToAddonChat(timestamp) - local data = AskMrRobot.ExportToCompressedString(false) + local msg = AskMrRobot.ExportToCompressedString(false) local msgPrefix = timestamp .. "\n" .. AmrRealmName .. "\n" .. AmrCharacterName .. "\n" -- break the data into 250 character chunks (to deal with the short limit on addon message size) local chunks = {} local i = 1 - local length = string.len(data) + local length = string.len(msg) local chunkLen = 249 - string.len(msgPrefix) while (i <= length) do local endpos = math.min(i + chunkLen, length) - table.insert(chunks, msgPrefix .. string.sub(data, i, endpos)) + table.insert(chunks, msgPrefix .. string.sub(msg, i, endpos)) i = endpos + 1 end
--- a/AskMrRobot.toc Wed May 21 00:01:02 2014 -0500 +++ b/AskMrRobot.toc Thu Jul 10 12:24:59 2014 -0700 @@ -1,12 +1,13 @@ ## Interface: 50400 ## Title: Ask Mr. Robot ## Author: Team Robot, Inc. -## Version: 1.2.12.0 +## Version: 1.2.14.0 ## Notes: Exports/Imports data to/from askmrrobot.com. ## URL: www.askmrrobot.com ## DefaultState: Enabled ## LoadOnDemand: 0 ## SavedVariablesPerCharacter: AmrBagItems,AmrBankItems,AmrEquipedItems,AmrGold,AmrRealmName,AmrCharacterName,AmrIconInfo,AmrCurrencies,AmrProfessions,AmrSpecializations,AmrRace,AmrLevel,AmrFaction,AmrActiveSpec,AmrOptions,AmrGlyphs,AmrTalents,AmrBankItemsAndCounts,AmrImportString,AmrImportDate,AmrSendSettings,AmrLogData +## SavedVariables: AmrSettings #@no-lib-strip@ Libs\LibStub\Libstub.lua @@ -19,11 +20,17 @@ Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua #@end-no-lib-strip@ +#translations first +Localization\localization.en.lua +Localization\localization.de.lua + wait.lua sort.lua enchants.lua gems.lua ui\Components.lua +ui\FontString.lua +ui\ScrollFrame.lua ui\RobotStamp.lua ui\ItemTooltipFrame.lua ui\ItemLinkText.lua
--- a/AskMrRobotUi.lua Wed May 21 00:01:02 2014 -0500 +++ b/AskMrRobotUi.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; local showImportDetailsError = nil local showImportErrorTab = nil @@ -102,21 +103,21 @@ local parsed = AskMrRobot.parseAmr(input) if not parsed.realm then - self:showImportError("Oops, you didn't have proper import text", "Please go back to AskMrRobot.com and grab optimizations for this character") + self:showImportError(L.AMR_UI_IMPORT_ERROR_IMPROPER,L.AMR_UI_IMPORT_ERROR_IMPROPER_GOTO) elseif not AskMrRobot.validateCharacterName(parsed.name) then - self:showImportError("Oops, you've imported optimizations for " .. parsed.name, "Please go back to AskMrRobot.com and grab optimizations for this character, who is much better looking anyway!") + self:showImportError(L.AMR_UI_IMPORT_ERROR_CHARACTER:format(parsed.name), L.AMR_UI_IMPORT_ERROR_CHARACTER_GOTO) elseif not AskMrRobot.validateRace(parsed.race) then - self:showImportError("It looks like your race may have changed, which affects the optimizations.", "Right now, Mr. Robot thinks you are a " .. parsed.race) + self:showImportError(L.AMR_UI_IMPORT_ERROR_RACE, L.AMR_UI_IMPORT_ERROR_RACE_CURRENT:format(parsed.race)) elseif not AskMrRobot.validateFaction(parsed.faction) then - self:showImportError("It looks like your faction may have changed.", "Right now, Mr. Robot thinks you belong to the " .. parsed.faction) + self:showImportError(L.AMR_UI_IMPORT_ERROR_FACTION, L.AMR_UI_IMPORT_ERROR_FACTION_CURRENT:format(parsed.faction)) elseif not AskMrRobot.validateProfessions(parsed.professions) then - self:showImportError("Your professions have changed, which affects the optimizations.", "You will need to make sure your in-game professions match the professions on AskMrRobot.com when importing.") + self:showImportError(L.AMR_UI_IMPORT_ERROR_PROFESSIONS, L.AMR_UI_IMPORT_ERROR_PROFESSIONS_GOTO) elseif not AskMrRobot.validateSpec(parsed.spec) then if parsed.spec and parsed.spec ~= 'nil' then local _, specName = GetSpecializationInfoByID(parsed.spec) - self:showImportError("WARNING! Please check your character before proceeding:", "Change your spec to " .. specName .. ".") + self:showImportError(L.AMR_UI_IMPORT_ERROR_SPEC, L.AMR_UI_IMPORT_ERROR_SPEC_CHANGE:format(specName)) else - self:showImportError("WARNING! Please check your character before proceeding:", "AskMrRobot.com did not expect to see a specialization.") + self:showImportError(L.AMR_UI_IMPORT_ERROR_SPEC, L.AMR_UI_IMPORT_ERROR_SPEC_UNEXPECTED) end self.mostlySuccess = true self.summaryTab.badRealm = nil @@ -148,13 +149,13 @@ local errorText1 = tab:CreateFontString("AmrImportDetailsText2", "ARTWORK", "GameFontRed") errorText1:SetPoint("TOPLEFT", "AmrImportDetailsText1", "BOTTOMLEFT", 0, -20) - errorText1:SetText('You have no optimizations imported. Click the "Import" tab to get started.') + errorText1:SetText(L.AMR_UI_IMPORT_ERROR_NO_IMPORT) errorText1:SetPoint("RIGHT", -10, 0) errorText1:SetWidth(errorText1:GetWidth()) errorText1:SetJustifyH("LEFT") showImportDetailsError = function() - errorText1:SetText("I can't optimize yet. Please go to the summary tab for more information.") + errorText1:SetText(L.AMR_UI_IMPORT_ERROR_CANT_OPTIMIZE) end showImportErrorTab = function(tabName) @@ -216,15 +217,15 @@ tabButton:SetScript("OnClick", onTabButtonClick) end - createButton("Import", -35, false) - createButton("Summary", -20, false) - createButton("Gems", 0, true) - createButton("Enchants", 0, true) - createButton("Reforges", 0, true) - createButton("Shopping List", 0, true) - createButton("Best in Bags", -20, false) - createButton("Combat Log", 0, false) - createButton("Help", -20, false) + createButton(L.AMR_UI_BUTTON_IMPORT, -35, false) + createButton(L.AMR_UI_BUTTON_SUMMARY, -20, false) + createButton(L.AMR_UI_BUTTON_GEMS, 0, true) + createButton(L.AMR_UI_BUTTON_ENCHANTS, 0, true) + createButton(L.AMR_UI_BUTTON_REFORGES, 0, true) + createButton(L.AMR_UI_BUTTON_SHOPPING_LIST, 0, true) + createButton(L.AMR_UI_BUTTON_BEST_IN_BAGS, -20, false) + createButton(L.AMR_UI_BUTTON_COMBAT_LOG, 0, false) + createButton(L.AMR_UI_BUTTON_HELP, -20, false) return buttons end
--- a/config.lua Wed May 21 00:01:02 2014 -0500 +++ b/config.lua Thu Jul 10 12:24:59 2014 -0700 @@ -40,13 +40,13 @@ subtitle:SetJustifyH("LEFT") subtitle:SetNonSpaceWrap(false) subtitle:SetJustifyV("TOP") - subtitle:SetText("Mr. Robot's addon can export your item information to his website, and import your optimizations into the game.") + subtitle:SetText(L.AMR_CONFIG_EXIMPORT) subTitleWrapper:SetHeight(subtitle:GetHeight()) local autoPopup = newCheckbox( - "Show minimap icon", - "Minimap Icon", - "Show the Ask Mr. Robot minimap icon.", + L.AMR_CONFIG_CHECKBOX_MINIMAP_LABEL, + L.AMR_CONFIG_CHECKBOX_MINIMAP_TOOLTIP_TITLE, + L.AMR_CONFIG_CHECKBOX_MINIMAP_DESCRIPTION, function(self, value) if AmrOptions.hideMapIcon then AmrOptions.hideMapIcon = false @@ -60,9 +60,9 @@ autoPopup:SetPoint("TOPLEFT", subTitleWrapper, "BOTTOMLEFT", -2, -16) local autoReforge = newCheckbox( - "Automatically show Mr. Robot's reforge window at the reforger", - "Auto-Show Reforges", - "When you have suggested reforges left to complete, automatically show Mr. Robot's reforge window when you visit a reforger.", + L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_LABEL, + L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_TOOLTIP_TITLE, + L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_DESCRIPTION, function(self, value) if AmrOptions.manualShowReforge then AmrOptions.manualShowReforge = false @@ -75,9 +75,9 @@ autoReforge:SetPoint("TOPLEFT", subTitleWrapper, "BOTTOMLEFT", -2, -52) local autoAh = newCheckbox( - "Automatically show Mr. Robot's shopping list at the auction house", - "Auto-Show Shopping List", - "When your shopping list still has things left to buy, automatically show Mr. Robot's shopping list when you visit the auction house.", + L.AMR_CONFIG_CHECKBOX_AUTOAH_LABEL, + L.AMR_CONFIG_CHECKBOX_AUTOAH_TOOLTIP_TITLE, + L.AMR_CONFIG_CHECKBOX_AUTOAH_DESCRIPTION, function(self, value) if AmrOptions.manualShowShop then AmrOptions.manualShowShop = false @@ -93,9 +93,9 @@ AmrOptions.autoLog = AmrOptions.autoLog or {} local autoCombatLog = newCheckbox( - "Automatically turn on combat logging for Siege of Orgrimmar", - "Automatically Log Siege of Orgrimmar", - "When entering Siege of Orgrimmar, combat logging will be turned on. When leaving Siege of Orgrimmar, combat logging will be turned off.", + L.AMR_CONFIG_CHECKBOX_AUTOLOG_LABEL, + L.AMR_CONFIG_CHECKBOX_AUTOLOG_TOOLTIP_TITLE, + L.AMR_CONFIG_CHECKBOX_AUTOLOG_DESCRIPTION, function(self, value) if AmrOptions.autoLog[1136] then AmrOptions.autoLog[1136] = false
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localization/localization.de.lua Thu Jul 10 12:24:59 2014 -0700 @@ -0,0 +1,520 @@ +--check locale +if GetLocale() ~= "deDE" then return end +local _, AskMrRobot = ... +local L = AskMrRobot.L; +--AskMrRobotUi.lua +--validateInput +L.AMR_UI_IMPORT_ERROR_IMPROPER = "Ups, du hattest keinen gültigen Importtext" +L.AMR_UI_IMPORT_ERROR_IMPROPER_GOTO = "Bitte gehe zurück auf AskMrRobot.com und hole dir die Optimierungen für diesen Charakter" +L.AMR_UI_IMPORT_ERROR_CHARACTER = "Ups, diese Optmimierungen sind für %s" +L.AMR_UI_IMPORT_ERROR_CHARACTER_GOTO = "Bitte gehe zurück auf AskMrRobot.com und hole dir die Optimierungen für diesen Charakter, der sieht ohnehin besser aus!" +L.AMR_UI_IMPORT_ERROR_RACE = "Es sieht so aus als hätte sich deine Rasse geändert, dass beeinflusst die Optimierungen." +L.AMR_UI_IMPORT_ERROR_RACE_CURRENT = "Im Moment denkt Mr. Robot du wärest ein %s" +L.AMR_UI_IMPORT_ERROR_FACTION = "Es sieht so aus als hätte sich deine Fraktion geändert." +L.AMR_UI_IMPORT_ERROR_FACTION_CURRENT = "Im Moment denkt Mr. Robot du gehörst zur %s" +L.AMR_UI_IMPORT_ERROR_PROFESSIONS = "Deine Berufe haben sich geändert, dass beeinflusst die Optimierung." +L.AMR_UI_IMPORT_ERROR_PROFESSIONS_GOTO = "Du musst sicherstellen, dass deine Berufe denen auf AskMrRobot.com gleichen." +L.AMR_UI_IMPORT_ERROR_SPEC = "WARNUNG! Bitte überprüfe deinen Charackter bevor du fortfährst:" +L.AMR_UI_IMPORT_ERROR_SPEC_CHANGE = "Ändere deine Talentspezialisierung auf %s." +L.AMR_UI_IMPORT_ERROR_SPEC_UNEXPECTED = "AskMrRobot.com hat keine Talentspezialisierung erwartet." +--createImportDetailsErrorTab +L.AMR_UI_IMPORT_ERROR_NO_IMPORT = 'Du hast noch keine Optimierungen importiert. Klicke auf den Reiter "Import" um zu starten.' +L.AMR_UI_IMPORT_ERROR_CANT_OPTIMIZE = 'Ich kann gerade nicht optimieren. Bitte schaue im Reiter "Übersicht" nach den Gründen.' +--createTabButtons +L.AMR_UI_BUTTON_IMPORT = "Import" +L.AMR_UI_BUTTON_SUMMARY = "Übersicht" +L.AMR_UI_BUTTON_GEMS = "Edelsteine" +L.AMR_UI_BUTTON_ENCHANTS = "Verzauberungen" +L.AMR_UI_BUTTON_REFORGES = "Umschmiedungen" +L.AMR_UI_BUTTON_SHOPPING_LIST = "Einkaufsliste" +L.AMR_UI_BUTTON_BEST_IN_BAGS = "Beste im Beutel" +L.AMR_UI_BUTTON_COMBAT_LOG = "Kampflog" +L.AMR_UI_BUTTON_HELP = "Hilfe" +--AskMrRobot.lua +--eventListener:OnEvent +L.AMR_ON_EVENT_LOADED = "Ask Mr. Robot geladen, Version %s" +L.AMR_ON_EVENT_TOOLTIP = "Linksklick öffnet das AskMrRobot Fenster.\n\nShift + Linksklick um deinen Bank- und Beutelinhalt zu exportieren.\n\nCtrl + Linksklick um einen Kampf als wischen markieren." +--SlashCmdList.AMR +L.AMR_SLASH_COMMAND_TEXT_1 = 'Available AskMrRobot slash commands:\n' +L.AMR_SLASH_COMMAND_TEXT_2 = ' /amr show -- zeige Fenster\n' +L.AMR_SLASH_COMMAND_TEXT_3 = ' /amr hide -- verstecke Fenster\n' +L.AMR_SLASH_COMMAND_TEXT_4 = ' /amr toggle -- schalte Fenster um' +L.AMR_SLASH_COMMAND_TEXT_7 = ' /amr export -- exportiere Beutel- und Bankinhalt (benutzt deine zuletzt gewählte Methode und öffnet entweder das kopieren/einfügen-Fenster oder speichert und lädt die UI neu)' +--config.lua +--frame:SetScript +L.AMR_CONFIG_EXIMPORT = "Mr. Robot's addon kann deine Gegenstandsinformationen auf seine Webseite exportieren und die Optimierungen wieder ins Spiel." +L.AMR_CONFIG_CHECKBOX_MINIMAP_LABEL = "Zeige Minimapicon" +L.AMR_CONFIG_CHECKBOX_MINIMAP_TOOLTIP_TITLE = "Minimapicon" +L.AMR_CONFIG_CHECKBOX_MINIMAP_DESCRIPTION = "Zeige das Ask Mr. Robot Minimapicon." +L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_LABEL = "Öffne automatisch das Mr. Robot's Umschmiedungsfenster beim Umschmieder" +L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_TOOLTIP_TITLE = "Auto-Zeigen der Umschmiedungen" +L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_DESCRIPTION = "Wenn du noch vorgschlagene Umschmiedungen machen musst, öffne automatisch Mr. Robot's Umschmiedungsfenster wenn du einen Umschmieder besuchst." +L.AMR_CONFIG_CHECKBOX_AUTOAH_LABEL = "Öffne die Mr. Robot's Einkaufsliste automatisch beim Auktionshaus" +L.AMR_CONFIG_CHECKBOX_AUTOAH_TOOLTIP_TITLE = "Auto-Zeige Einkaufsliste" +L.AMR_CONFIG_CHECKBOX_AUTOAH_DESCRIPTION = "Wenn auf deiner Einkaufsliste noch Posten offen sind, dann zeige Mr. Robot's Einkaufsliste wenn du das Auktionshaus besuchst." +L.AMR_CONFIG_CHECKBOX_AUTOLOG_LABEL = "Starte Protokollierung der Schlacht um Orgrimmar automatisch" +L.AMR_CONFIG_CHECKBOX_AUTOLOG_TOOLTIP_TITLE = "Automatisch Schlacht um Orgrimmar protokollieren" +L.AMR_CONFIG_CHECKBOX_AUTOLOG_DESCRIPTION = "Sobald du die Schlacht um Orgrimmar betrittst, wird das Kampflog eingeschaltet. Bei Verlassen der SuO wird das Kampflog ausgeschaltet." +--enchants.lua +--enchantNames +L.AMR_ENCHANTS_BELT_BUCKLE = "Belt Buckle" +L.AMR_ENCHANTS_FROSTBRAND = "Frostbrand" +L.AMR_ENCHANTS_FLAMETONGUE = "Flametongue" +L.AMR_ENCHANTS_DAMAGE = "Damage" +L.AMR_ENCHANTS_SHARPENED = "Sharpened" +L.AMR_ENCHANTS_WEIGHTED = "Weighted" +L.AMR_ENCHANTS_ARMOR = "Armor" +L.AMR_ENCHANTS_MANA = "Mana" +L.AMR_ENCHANTS_SHADOW_OIL = "Shadow Oil" +L.AMR_ENCHANTS_FROST_OIL = "Frost Oil" +L.AMR_ENCHANTS_SUNDERED = "Sundered" +L.AMR_ENCHANTS_ALL_RESISTANCES = "All Resistances" +L.AMR_ENCHANTS_SCOPE = "Scope" +L.AMR_ENCHANTS_BEASTSLAYING = "Beastslaying" +L.AMR_ENCHANTS_HASTE = "Haste" +L.AMR_ENCHANTS_FIERY_BLAZE = "Enchant: Fiery Blaze" +L.AMR_ENCHANTS_STEEL_WPNCHAIN = "Steel Weapon Chain" +L.AMR_ENCHANTS_DODGE = "Dodge" +L.AMR_ENCHANTS_HEALTH = "Health" +L.AMR_ENCHANTS_MAX_HEALTH = "Maximum Health" +L.AMR_ENCHANTS_IRON_SPIKE = "Iron Spike (8-12)" +L.AMR_ENCHANTS_THORIUM_SPIKE = "Thorium Spike (20-30)" +L.AMR_ENCHANTS_FELSTEEL_SPIKE = "Felsteel Spike (26-38)" +L.AMR_ENCHANTS_TITANIUM_SPIKE = "Titanium Spike (45-67)" +L.AMR_ENCHANTS_ELEMENTIUM_SPIKE = "Elementium Spike (90-133)" +L.AMR_ENCHANTS_PYRIUM_SPIKE = "Pyrium Spike (210-350)" +L.AMR_ENCHANTS_GHOSTIRON_SPIKE = "Ghost Iron Spike (600-1000)" +L.AMR_ENCHANTS_ABSORPTION = "Absorption" +L.AMR_ENCHANTS_SPIRIT = "Spirit" +L.AMR_ENCHANTS_STR = "Str" +L.AMR_ENCHANTS_STAM = "Stam" +L.AMR_ENCHANTS_AGI = "Agi" +L.AMR_ENCHANTS_INT = "Int" +L.AMR_ENCHANTS_CRIT = "Crit" +L.AMR_ENCHANTS_EXP = "Exp" +L.AMR_ENCHANTS_PARRY = "Parry" +L.AMR_ENCHANTS_HIT = "Hit" +L.AMR_ENCHANTS_AP = "AP" +L.AMR_ENCHANTS_RESIL = "Resil" +L.AMR_ENCHANTS_MASTERY = "Mastery" +L.AMR_ENCHANTS_PVP_POW = "PvP Pow" +L.AMR_ENCHANTS_BLOCK = "Block" +L.AMR_ENCHANTS_SWORD_SKILL = "Sword Skill" +L.AMR_ENCHANTS_SWORD_SKILL_2H = "Two-Handed Sword Skill" +L.AMR_ENCHANTS_MACE_SKILL = "Mace Skill" +L.AMR_ENCHANTS_MACE_SKILL_2H = "Two-Handed Mace Skill" +L.AMR_ENCHANTS_AXE_SKILL = "Axe Skill" +L.AMR_ENCHANTS_AXE_SKILL_2H = "Two-Handed Axe Skill" +L.AMR_ENCHANTS_DAGGER_SKILL = "Dagger Skill" +L.AMR_ENCHANTS_GUN_SKILL = "Gun Skill" +L.AMR_ENCHANTS_BOW_SKILL = "Bow Skill" +L.AMR_ENCHANTS_BEAST_SLAYING = "Beast Slaying" +L.AMR_ENCHANTS_ON_GET_HIT_SBOLT = "On Get Hit: Shadow Bolt" +L.AMR_ENCHANTS_SP = "SP" +L.AMR_ENCHANTS_FIRE_SPELL_DAMAGE = "Fire Spell Damage" +L.AMR_ENCHANTS_HOLY_SPELL_DAMAGE = "Holy Spell Damage" +L.AMR_ENCHANTS_FROST_SPELL_DAMAGE = "Frost Spell Damage" +L.AMR_ENCHANTS_NATURE_SPELL_DAMAGE = "Nature Spell Damage" +L.AMR_ENCHANTS_SHADOW_SPELL_DAMAGE = "Shadow Spell Damage" +L.AMR_ENCHANTS_ARCANE_SPELL_DAMAGE = "Arcane Spell Damage" +L.AMR_ENCHANTS_WEAPON_DAMAGE = "Weapon Damage" +L.AMR_ENCHANTS_FIRE_RESISTANCE = "Fire Resistance" +L.AMR_ENCHANTS_FROST_RESISTANCE = "Frost Resistance" +L.AMR_ENCHANTS_SHADOW_RESISTANCE = "Shadow Resistance" +L.AMR_ENCHANTS_NATURE_RESISTANCE = "Nature Resistance" +L.AMR_ENCHANTS_ARCANE_RESISTANCE = "Arcane Resistance" +L.AMR_ENCHANTS_ALL_STATS = "All Stats" +L.AMR_ENCHANTS_RUN_SPEED = "Run Speed" +L.AMR_ENCHANTS_RESIST_ALL = "Resist All" +L.AMR_ENCHANTS_FISHING_LURE = "Fishing Lure" +L.AMR_ENCHANTS_FISHING_SKILL = "Fisching Skill" +L.AMR_ENCHANTS_WINDFURY = "Windfury" +L.AMR_ENCHANTS_WEAPON_FIRE_DMG = "Weapon Fire Damage" +L.AMR_ENCHANTS_ORB_OF_FIRE = "Orb of Fire" +L.AMR_ENCHANTS_BLACK_TEMPLE_DUMMY = "Black Temple Dummy" +L.AMR_ENCHANTS_MITHRIL_SPIKE = "Mithril Spike (16-20)" +L.AMR_ENCHANTS_MOUNT_SPEED = "Mount Speed" +L.AMR_ENCHANTS_STEALTH = "Stealth" +L.AMR_ENCHANTS_SCHIELD_BLOCK = "Shield Block" +L.AMR_ENCHANTS_FIERY_WEAPON = "Fiery Weapon" +L.AMR_ENCHANTS_MINING = "Mining" +L.AMR_ENCHANTS_HERBALISM = "Herbalism" +L.AMR_ENCHANTS_SKINNING = "Skinning" +L.AMR_ENCHANTS_FISHING = "Fishing" +L.AMR_ENCHANTS_OMEN_OF_CLARITY = "Omen of Clarity" +L.AMR_ENCHANTS_MHTEST02 = "MHTest02" +L.AMR_ENCHANTS_COLD_BLOOD = "Cold Blood" +L.AMR_ENCHANTS_FIRESTONE_1 = "Firestone 1" +L.AMR_ENCHANTS_FIRESTONE_2 = "Firestone 2" +L.AMR_ENCHANTS_FIRESTONE_3 = "Firestone 3" +L.AMR_ENCHANTS_FIRESTONE_4 = "Firestone 4" +L.AMR_ENCHANTS_FIRESTONE_5 = "Firestone 5" +L.AMR_ENCHANTS_FIRESTONE_MASTER = "Master Firestone" +L.AMR_ENCHANTS_FIRESTONE = "Firestone" +L.AMR_ENCHANTS_FIRESTONE_GREATER = "Greater Firestone" +L.AMR_ENCHANTS_FIRESTONE_MAJOR = "Major Firestone" +L.AMR_ENCHANTS_FIRESTONE_FEL = "Fel Firestone" +L.AMR_ENCHANTS_FIRESTONE_GRAND = "Grand Firestone" +L.AMR_ENCHANTS_SPELLSTONE = "Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_GREATER = "Greater Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_MAJOR = "Major Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_MASTER = "Master Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_DEMONIC = "Demonic Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_GRAND = "Grand Spellstone" +L.AMR_ENCHANTS_ICY_CHILL = "Icy Chill" +L.AMR_ENCHANTS_LIFESTEALING = "Lifestealing" +L.AMR_ENCHANTS_UNHOLY_WEAPON = "Unholy Weapon" +L.AMR_ENCHANTS_CRUSADER = "Crusader" +L.AMR_ENCHANTS_BLOCK_LEVEL = "Block Level" +L.AMR_ENCHANTS_RANGED_ATTACK_POWER = "Ranged Attack Power" +L.AMR_ENCHANTS_MANA_EVERY_5_SEC = "mana every 5 sec." +L.AMR_ENCHANTS_HEALTH_EVERY_5_SEC = "health every 5 sec." +L.AMR_ENCHANTS_MELEE_CRIT_STRIKE = "Melee Critical Strike" +L.AMR_ENCHANTS_ZZOLDBLANK = "zzOLDBlank" +L.AMR_ENCHANTS_THREAT = "Threat" +L.AMR_ENCHANTS_SHADOW_SPELL_POWER = "Shadow Spell Power" +L.AMR_ENCHANTS_FROST_SPELL_POWER = "Frost Spell Power" +L.AMR_ENCHANTS_FIRE_SPELL_POWER = "Fire Spell Power" +L.AMR_ENCHANTS_REDUCED_THREAT = "Reduced Threat" +L.AMR_ENCHANTS_WIZARD_OIL_MINOR = "Minor Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_LESSER = "Lesser Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL = "Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_BRILLIANT = "Brilliant Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_SUPERIOR = "Superior Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_EXCEPTIONAL = "Exceptional Wizard Oil" +L.AMR_ENCHANTS_MANA_OIL_MINOR = "Minor Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_LESSER = "Lesser Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_BRILLIANT = "Brilliant Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_SUPERIOR = "Superior Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_EXCEPTIONAL = "Exceptional Mana Oil" +L.AMR_ENCHANTS_ELEMENTAL_SLAYER = "Elemental Slayer" +L.AMR_ENCHANTS_DEMONSLAYING = "Demonslaying" +L.AMR_ENCHANTS_VENOMHIDE_POISON = "Venomhide Poison" +L.AMR_ENCHANTS_ARCANE_FIRE_SPELL_POWER = "Arcane and Fire Spell Power" +L.AMR_ENCHANTS_SHADOW_FROST_SPELL_POWER = "Shadow and Frost Spell Power" +L.AMR_ENCHANTS_MONGOOSE = "Mongoose" +L.AMR_ENCHANTS_SPELLSURGE = "Spellsurge" +L.AMR_ENCHANTS_BATTLEMASTER = "Battlemaster" +L.AMR_ENCHANTS_AP_VS_UNDEAD = "Attack Power vs Undead" +L.AMR_ENCHANTS_SP_VS_UNDEAD = "Spell Power vs Undead" +L.AMR_ENCHANTS_AGI_PER_GEM = "Agility per different colored gem" +L.AMR_ENCHANTS_STR_4_BLUE_GEMS = "Strength if 4 blue gems equipped" +L.AMR_ENCHANTS_LESSER_RUNE_WARDING = "Lesser Rune of Warding" +L.AMR_ENCHANTS_GREATER_RUNE_WARDING = "Greater Rune of Warding" +L.AMR_ENCHANTS_LESSER_WARD_SHIELDING = "Lesser Ward of Shielding" +L.AMR_ENCHANTS_GREATER_WARD_SHIELDING = "Greater Ward of Shielding" +L.AMR_ENCHANTS_ZZOLDLESSER_RUNE_WARDING = "ZZOLDLesser Rune of Warding" +L.AMR_ENCHANTS_COMFORT_INSOLES = "Comfortable Insoles" +L.AMR_ENCHANTS_ARCANE_DAMAGE = "Arcane Damage" +L.AMR_ENCHANTS_FIRE_DAMAGE = "Fire Damage" +L.AMR_ENCHANTS_NATURE_DAMAGE = "Nature Damage" +L.AMR_ENCHANTS_FROST_DAMAGE = "Frost Damage" +L.AMR_ENCHANTS_SHADOW_DAMAGE = "Shadow Damage" +L.AMR_ENCHANTS_HEALING = "Healing" +L.AMR_ENCHANTS_BLOODY_DANCING_STEEL = "Bloody Dancing Steel" +L.AMR_ENCHANTS_TYRANNY = "Tyranny" +L.AMR_ENCHANTS_SOCKET_BELT = "Socket Belt" +L.AMR_ENCHANTS_USE_WALK_ON_WATER = "Use: Allows you to walk on water and increases swim speed for up to 6 sec. (30 Sec Cooldown)" +L.AMR_ENCHANTS_BREATH_AGILE_PRINCE = "Breath of the Agile Prince" +L.AMR_ENCHANTS_USE_REDUCE_FALLING_SPEED_10SEC = "Use: Reduce your fall speed for 10 sec. (5 Min Cooldown) (5 Min Cooldown)" +L.AMR_ENCHANTS_USE_REDUCE_FALLING_SPEED_30SEC = "Use: Reduces your falling speed for 30 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_REDUCE_FALLING_SPEED_2MIN = "Use: Reduces your falling speed for 2 min. (3 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_INT_AGI_STR_480 = "Use: Increases your Intellect, Agility, or Strength by 480 for 10 sec. Your highest stat is always chosen. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_INT_AGI_STR_1920 = "Use: Increases your Intellect, Agility, or Strength by 1,920 for 10 sec. Your highest stat is always chosen. (1 Min Cooldown)" +L.AMR_ENCHANTS_SWORDGUARD_EMBROIDERY = "Swordguard Embroidery" +L.AMR_ENCHANTS_SWORDGUARD_1 = "Swordguard 1" +L.AMR_ENCHANTS_SWORDGUARD_2 = "Swordguard 2" +L.AMR_ENCHANTS_SWORDGUARD_3 = "Swordguard 3" +L.AMR_ENCHANTS_DARKGLOW_1 = "Darkglow 1" +L.AMR_ENCHANTS_DARKGLOW_2 = "Darkglow 2" +L.AMR_ENCHANTS_DARKGLOW_3 = "Darkglow 3" +L.AMR_ENCHANTS_LIGHTWEAVE_1 = "Lightweave 1" +L.AMR_ENCHANTS_LIGHTWEAVE_2 = "Lightweave 2" +L.AMR_ENCHANTS_LIGHTWEAVE_3 = "Lightweave 3" +L.AMR_ENCHANTS_PANDAREN_FISHING_LURE = "Pandaren Fishing Lure" +L.AMR_ENCHANTS_MAGIC_WEAPON = "Magic Weapon" +L.AMR_ENCHANTS_USE_MYTHICAL_HEALING_POTION = "Use: Injects a Mythical Healing Potion directly into your bloodstream, increasing potency and healing you for 30,000. (1 Min Cooldown)" +L.AMR_ENCHANTS_PLACEHOLDER_SHOULDER = "Placeholder Shoulder Enchant" +L.AMR_ENCHANTS_PANDEMONIUM = "Pandamonium" +L.AMR_ENCHANTS_MIRROR_SCOPE = "Mirror Scope" +L.AMR_ENCHANTS_BLASTINGTON = "Blastington's" +L.AMR_ENCHANTS_USE_EXPLOSIVE_FIREWORKS = "Use: Launches a cluster of highly explosive fireworks that detonate on impact for 14,000 Fire damage over 3 sec. (45 Sec Cooldown)" +L.AMR_ENCHANTS_USE_DODGE = "Use: Increases your dodge by 480 for 10 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_SAMURAI = "Samurai" +L.AMR_ENCHANTS_RIVERS_SONG = "River's Song" +L.AMR_ENCHANTS_COLOSSUS = "Colossus" +L.AMR_ENCHANTS_DANCING_STEEL = "Dancing Steel" +L.AMR_ENCHANTS_ELEMENTAL_FORCE = "Elemental Force" +L.AMR_ENCHANTS_JADE_SPIRIT = "Jade Spirit" +L.AMR_ENCHANTS_WINDSONG = "Windsong" +L.AMR_ENCHANTS_FLINTLOCKE = "Flintlocke's" +L.AMR_ENCHANTS_USE_RUN_SPEED = "Use: Greatly increase your run speed for 5 sec. (3 Min Cooldown)" +L.AMR_ENCHANTS_USE_MENTAL_COMBAT = "Use: Engage in mental combat with a humanoid target in an attempt to pacify or control them. (10 Min Cooldown)" +L.AMR_ENCHANTS_USE_CARDBOARD_ASSASSIN = "Use: Summons a Cardboard Assassin to draw the attention of enemies. (5 Min Cooldown)" +L.AMR_ENCHANTS_USE_SHIELD_OF_FORCE = "Use: Protects you with a shield of force that stops 18,000 damage for 8 sec. The strong magnetic field sometimes has strange side effects... (5 Min Cooldown)" +L.AMR_ENCHANTS_USE_PERSONAL_INVISIBILITY_FIELD = "Use: Activates a personal invisibility field. Cannot be used in combat. (3 Min Cooldown)" +L.AMR_ENCHANTS_USE_ELECTRIC_BALL = "Use: Fires an electrified ball at an enemy for 4,800 Nature damage. (2 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_ARMOR_700 = "Use: Increases your armor by 700 for 14 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_ARMOR_1500 = "Use: Increases your armor by 1,500 for 13 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_GNOMISH_XRAY = "Gnomish X-Ray" +L.AMR_ENCHANTS_LANDSLIDE = "Landslide" +L.AMR_ENCHANTS_WINDWALK = "Windwalk" +L.AMR_ENCHANTS_POWER_TORRENT = "Power Torrent" +L.AMR_ENCHANTS_HEARTSONG = "Heartsong" +L.AMR_ENCHANTS_HURRICANE = "Hurricane" +L.AMR_ENCHANTS_AVALANCHE = "Avalanche" +L.AMR_ENCHANTS_MENDING = "Mending" +L.AMR_ENCHANTS_NERUBIAN_CARAPACE = "Nerubian Carapace" +L.AMR_ENCHANTS_BLOOD_DRAINING = "Blood Draining" +L.AMR_ENCHANTS_BLADE_WARD = "Blade Ward" +L.AMR_ENCHANTS_TITANIUM_PLATING = "Titanium Plating" +L.AMR_ENCHANTS_SOCKET_STAFF = "Socket Staff" +L.AMR_ENCHANTS_STONESKIN_GARGOYLE = "Stoneskin Gargoyle" +L.AMR_ENCHANTS_BERSERKING = "Berserking" +L.AMR_ENCHANTS_BLACK_MAGIC = "Black Magic" +L.AMR_ENCHANTS_SOCKET_GLOVES = "Socket Gloves" +L.AMR_ENCHANTS_SOCKET_BRACERS = "Socket Bracer" +L.AMR_ENCHANTS_CHANCE_INCREASE_MELEE_RANGED_ASPEED = "Chance to Increase Melee/Ranged Attack Speed" +L.AMR_ENCHANTS_SWORDBREAKING = "Swordbreaking" +L.AMR_ENCHANTS_SPELLBREAKING = "Spellbreaking" +L.AMR_ENCHANTS_USE_STUN_MECH_UNITS_1MIN = "Use: Stuns all nearby Mechanical units for 3 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_THERMAL_GRENADE = "Use: Detatch and throw a thermal grenade, inflicting 10,000 Fire damage and incapacitating targets for 3 sec in a 3 yard radius. Any damage will break the effect. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_EXPLOSIVE_ROCKET = "Use: Fires an explosive rocket at an enemy for 1,165 Fire damage. (45 Sec Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_HASTE_240 = "Use: Increases your haste by 240 for 12 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_CHANCE_INCREASE_SPELL_CAST_SPEED = "Chance to Increase Spell Cast Speed" +L.AMR_ENCHANTS_MELEEDMG_STUN_TARGET = "Melee Damage and Chance to Stun Target" +L.AMR_ENCHANTS_BLOCK_VALUE = "Block Value" +L.AMR_ENCHANTS_GEM_TEST = "gem test enchantment" +L.AMR_ENCHANTS_ROCKBITER = "Rockbiter" +L.AMR_ENCHANTS_AP_VS_UNDEAD_DEMONS = "Attack Power vs Undead and Demons" +L.AMR_ENCHANTS_POISON = "Poison" +L.AMR_ENCHANTS_ADAMANTITE_WEAPON_CHAIN = "Adamantite Weapon Chain" +L.AMR_ENCHANTS_EXECUTIONER = "Executioner" +L.AMR_ENCHANTS_GATHERER = "Gatherer" +L.AMR_ENCHANTS_ICEBREAKER_WEAPON = "Icebreaker Weapon" +L.AMR_ENCHANTS_LIFEWARD = "Lifeward" +L.AMR_ENCHANTS_ICEWALKER = "Icewalker" +L.AMR_ENCHANTS_GIANTSLAYING = "Giantslaying" +L.AMR_ENCHANTS_BLESSED_WEAPON_COATING = "Blessed Weapon Coating" +L.AMR_ENCHANTS_RIGHTEOUS_WEAPON_COATING = "Righteous Weapon Coating" +L.AMR_ENCHANTS_DEATHFROST = "Deathfrost" +L.AMR_ENCHANTS_TEST_RIDING_CROP = "Test Riding Crop Enchant" +L.AMR_ENCHANTS_TEST_ADD_SOCKETS_ENCHANT = "Test Add Sockets Enchant" +L.AMR_ENCHANTS_TEST_SKILL_REQ_ENCHANT = "Test Skill Req Enchant" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN = "Frozen Rune Weapon" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_2 = "Frozen Rune Weapon 2" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_3 = "Frozen Rune Weapon 3" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_4 = "Frozen Rune Weapon 4" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_5 = "Frozen Rune Weapon 5" +L.AMR_ENCHANTS_QA_TEST_BLANK_PURPLE_GEM = "QA Test Blank Purple Gem Enchant" +L.AMR_ENCHANTS_NORTHREND_FLIGHT = "Northrend Flight" +L.AMR_ENCHANTS_EARTHLIVING = "Earthliving" +L.AMR_ENCHANTS_EMPOWER_RUNE_WPN = "Empower Rune Weapon" +L.AMR_ENCHANTS_SWORDSHATTERING = "Swordshattering" +L.AMR_ENCHANTS_LICHBANE = "Lichbane" +L.AMR_ENCHANTS_SPELLSHATTERING = "Spellshattering" +L.AMR_ENCHANTS_FALLEN_CRUSADER = "Fallen Crusader" +L.AMR_ENCHANTS_CINDERGLACIER = "Cinderglacier" +L.AMR_ENCHANTS_RAZORICE = "Razorice" +--gems.lua +--alternateGemName +L.AMR_GEMS_INT = "Int" +L.AMR_GEMS_STR = "Str" +L.AMR_GEMS_AGI = "Agi" +L.AMR_GEMS_CRIT = "Crit" +L.AMR_GEMS_HASTE = "Haste" +L.AMR_GEMS_HIT = "Hit" +L.AMR_GEMS_PVP_POW = "PvP Pow" +L.AMR_GEMS_STAM = "Stam" +L.AMR_GEMS_DODGE = "Dodge" +L.AMR_GEMS_SPIRIT = "Spirit" +L.AMR_GEMS_PARRY = "Parry" +L.AMR_GEMS_RESIL = "Resil" +L.AMR_GEMS_EXP = "Exp" +L.ARMS_GEM_MASTERY = "Mastery" +L.AMR_GEMS_CRIT_EFF = "Crit Efct" +L.AMR_GEMS_BLOCK = "Block" +L.AMR_GEMS_MANA = "Mana" +L.AMR_GEMS_REFLECT = "Reflect" +L.AMR_GEMS_SNARE = "Snare" +L.AMR_GEMS_SILENCE = "Silence" +L.AMR_GEMS_ARMOR = "Armor" +L.AMR_GEMS_FEAR = "Fear" +L.AMR_GEMS_THREAT = "Threat" +L.AMR_GEMS_RUN_SPEED = "Run Speed" +L.AMR_GEMS_INDOMITABLE = "Indomitable" +L.AMR_GEMS_COURAGEOUS = "Courageous" +L.AMR_GEMS_CAPACITIV = "Capacitive" +L.AMR_GEMS_SINISTER = "Sinister" +L.AMR_GEMS_STUN = "Stun" +--autoGemHelper +L.AMR_GEMS_NOT_ENOUGH_SOCKETS = 'Ask Mr Robot: Irgendetwas ist falsch. Es befinden sich nicht genug Sockel in diesem Gegenstand.' +--wait.lua +--wait +L.AMR_WAIT_BAD_ARGUMENTS = "Bad Arguments to amr__wait" +--dir ui +--ui/CombatLogTab.lua +L.AMR_COMBATLOGTAB_COMBAT_LOGGING = "Kampflog" +L.AMR_COMBATLOGTAB_START_LOGGING = "Starte Kampflog" +L.AMR_COMBATLOGTAB_STOP_LOGGING = "Stoppe Kampflog" +L.AMR_COMBATLOGTAB_AUTOMATIC = "Auto:" +L.AMR_COMBATLOGTAB_MANUAL = "Manuell:" +L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_LABEL = "Automatisch Schlacht um Orgrimmar protokollieren" +L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_TOOLTIP_TITLE = "Automatisch Schlacht um Orgrimmar protokollieren" +L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_DESCRIPTION = "Automatisch Schlacht um Orgrimmar protokollieren wenn du die SuO betrittst und stoppe wenn du sie verlässt.\n\nBeachte, dass du andere Addons mit ähnlichen Funktionen deaktivieren solltest um Konflikte zu vermeiden." +L.AMR_COMBATLOGTAB_HEADLINE_OVER_BUTTON = "Charakterdaten" +L.AMR_COMBATLOGTAB_SAVE_CHARACTER = "Speichern" +L.AMR_COMBATLOGTAB_INSTRUCTIONS = "ANWEISUNGEN" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_1 = "1. Benutze den Start/Stop-Button oder markiere 'Automatisch Schlacht um Orgrimmar protokollieren'." +L.AMR_COMBATLOGTAB_INSTRUCTIONS_2 = "2. Wenn du bereit bist deine Daten hochzuladen, drücke 'Speichern'. *" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_3 = "3. Beende World of Warcraft. **" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_4 = "4. Starte den Ask Mr. Robot client und folge den Anweisungen. ***" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_5 = "|c00999999* Dies wird dein UI neuladen um abzusichern, dass alle gesammelten Daten auf deine Festplatte gespeichert werden. Dieser Schritt ist nicht notwendig wenn du dich vor dem Hochladen ausloggst.|r" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_6 = "|c00999999** WoW zu beenden bevor du hochlädst ist optional, aber sehr zu empfehlen. Dies verhindert, dass das Kampflog übertrieben groß wird und damit den Vorgang verlangsamt.|r" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_7 = "|c00999999*** Du kannst das Programm hier herunterladen: |r |c003333ffhttp://www.askmrrobot.com/wow/combatlog/upload|r|c00999999.|r" +L.AMR_COMBATLOGTAB_IS_LOGGING = "Du schreibst nun ein Kampflog und Mr. Robot speichert die Charakterdaten für den Raid." +L.AMR_COMBATLOGTAB_STOPPED_LOGGING = "Kampflog wurde gestoppt." +L.AMR_COMBATLOGTAB_INFIGHT = "In-Fight Options" +L.AMR_COMBATLOGTAB_WIPE_1 = "|c00aaaaaaDeclare a wipe |r|c00ffffffbefore|r|c00aaaaaa you die on purpose.|r" +L.AMR_COMBATLOGTAB_WIPE_2 = "|c00aaaaaaThis will ignore intentional deaths & damage.|r" +L.AMR_COMBATLOGTAB_WIPE_3 = "|c00999999This feature must be used by the person logging combat.|r" +L.AMR_COMBATLOGTAB_SAVE_CHARACTER_INFO = "While you are logging combat, character & gear data is collected for everyone in the raid who has this mod installed. At the end of the raid, the person logging needs to click the button to save the data so it can be uploaded." +L.AMR_COMBATLOGTAB_LASTWIPE = '|c00ff0000Last wipe called on %s at %s.|r' +L.AMR_COMBATLOGTAB_WIPE_CHAT = "It's a wipe, everybody die!" +L.AMR_COMBATLOGTAB_WIPE_MSG = "[AskMrRobot] Manual wipe called at %s" +L.AMR_COMBATLOGTAB_NOWIPES = '[AskMrRobot] There is no recent manual wipe to remove' +L.AMR_COMBATLOGTAB_UNWIPE_MSG = "[AskMrRobot] Manual wipe at %s was removed" +--ui/EnchantTab.lua +L.AMR_ENCHANTTAB_ENCHANTS = "Verzauberungen" +L.AMR_ENCHANTTAB_100_OPTIMAL = "Deine Verzauberungen sind 100% optimal!" +L.AMR_ENCHANTTAB_SLOT = "Platz" +L.AMR_ENCHANTTAB_CURRENT = "Aktuell" +L.AMR_ENCHANTTAB_OPTIMIZED = "Optimiert" +L.AMR_ENCHANTTAB_TESTSLOT = "TestSlot" +--ui/ExportTab.lua +L.AMR_EXPORTTAB_EXPORT_BB = "Exportiere Ausrüstung für das Beste im Beutel" +L.AMR_EXPORTTAB_COPY_PASTE = "Kopieren/Einfügen" +L.AMR_EXPORTTAB_AMR_CLIENT = "AMR Client" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT = "KOPIEREN/EINFÜGEN EXPORT" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_1 = "1. Öffne deine Bank" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_2 = "2. Kopiere den Text unterhalb mit Strg+C (oder Cmd+C auf einem Mac)" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_3 = "3. Gehe auf AskMrRobot.com und kopiere in das IMPORT-Fenster" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_4 = "(befindet sich rechts neben deinem Charakternamen im oberen Bereich der Webseite, siehe Screenshot)" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_NOTE = "Hinweis: Falls du etwas änderst während dieses Fenster offen ist, dann klicke auf Aktualisieren unten." +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT = "AMR CLIENT EXPORT" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_1 = "1. Öffne deine Bank" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_2 = "2. Klicke auf den Button unten um die AskMrRobot.lua Datei zu aktualisieren" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_3 = "3. Gehe auf AskMrRobot.com und drücke REFRESH" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_4 = "(befindet sich rechts neben deinem Charakternamen im oberen Bereich der Webseite, siehe Screenshot)" +--ui/GemTab.lua +--popup autogem finished +L.AMR_GEMTAB_FINISHED = "Mr. Robot ist fertig mit dem automatischen sockeln. \rFalls Gegenstände nicht gesockelt wurden, hattest du vielleicht nicht genug Edelsteine. \rSollte dein Gürtel nicht gesockelt sein, fehlt eventuell die Gürtelschnalle." +L.AMR_GEMTAB_BUTTON_OK = "Ok" +--popup autogem once +L.AMR_GEMTAB_AUTOGEMMING_IN_PROGRESS = "Autosockeln bereits aktiv." +--constructor +L.AMR_GEMTAB_GEMS = "Edelsteine" +L.AMR_GEMTAB_OPTIMAL = "Deine Edelsteine sind 100% optimal! Du bist nun wirklich, wirklich herausragend." +L.AMR_GEMTAB_X_OPTIMIZE = "Du hast X Edelsteine zu optimieren" +L.AMR_GEMTAB_AUTOGEM_BUTTON = "Auto Sockeln! (BETA)" +L.AMR_GEMTAB_PREFER_PERFECT = "Bevorzuge Perfekte" +L.AMR_GEMTAB_SLOT = "Platz" +L.AMR_GEMTAB_CURRENT = "Aktuell" +L.AMR_GEMTAB_OPTIMIZED = "Optimiert" +--Update +L.AMR_GEMTAB_TO_OPTIMIZE = "Du hast %d \1244Edelstein:Edelsteine; zu optimieren" +--ui/HelpTab.lua +L.AMR_HELPTAB_TITLE = "Hilfe" +L.AMR_HELPTAB_LINK = "Besuche |c003333ffhttp://blog.askmrrobot.com/addon/|r für eine komplette Anleitung und um Fragen zu stellen.\r\r" +L.AMR_HELPTAB_Q1 = "|c00999999Q:|r Muss ich zum Optimieren jedesmal einen neuen Text generieren?\r" +L.AMR_HELPTAB_A1 = '|c0066dd66A:|r Ja. Gehe auf die Webseite und klicke auf das grüne "Update from Armory" links von deinem Charakter damit immer die aktuellsten Daten vorliegen. Optimiere deine Ausrüstung und klicke dann auf "Export to Addon" um deinen neuen Text zu bekommen.\r\r' +L.AMR_HELPTAB_Q2 = "|c00999999Q:|r Die Gürtelschnalle taucht nicht in meiner Liste auf.\r" +L.AMR_HELPTAB_A2 = "|c0066dd66A:|r Korrekt, es ist schwierig diese im Spiel festzustellen. Aber wir arbeiten bereits an einem cleveren Weg sie zu erkennen!\r\r" +L.AMR_HELPTAB_Q3 = "|c00999999Q:|r Meine Zahnräder/Tüftlergetriebe werden nicht angezeigt.\r" +L.AMR_HELPTAB_A3 = "|c0066dd66A:|r Korrekt, wir arbeiten ebenfalls daran diese zu integrieren... das Problem ist, dass Mr. Robot alle aufgebraucht hat um Roboter zu bauen...\r\r" +L.AMR_HELPTAB_Q4 = "|c00999999Q:|r Kann ich meine Einkaufsliste an einen anderen meiner Charaktere schicken?\r" +L.AMR_HELPTAB_A4 = '|c0066dd66A:|r Ja, gehe in den Reiter Einkaufsliste und wähle "Post" als Option im Menü. Du kannst die Liste dann per Post verschicken.\r\r' +L.AMR_HELPTAB_Q5 = "|c00999999Q:|r Ich bin gerade im Raid und habe einen Gegenstand bekommen. Kann ich diesen schnell optimieren?\r" +L.AMR_HELPTAB_A5= "|c0066dd66A:|r Ja! Schaue in diese Anleitung hier: |c003333ffhttp://blog.askmrrobot.com/addon#raid|r" +--ui/ImportTab.lua +--new +L.AMR_IMPORTTAB_BUTTON = "Importieren!" +L.AMR_IMPORTTAB_TITLE = "Importiere Mr. Robot's Optimierungen" +L.AMR_IMPORTTAB_INSTRUCTIONS_1 = "1. Geh auf unsere Webseite, optmiere, klicke dann auf den 'export to addon'-Button der oberhalb der Statuswerte zu finden ist." +L.AMR_IMPORTTAB_INSTRUCTIONS_2 = "2. Ein Fenster öffnet sich, kopiere den Text dieses Fensters.\r\r3. Komm hierher zurück und füge den Text in das untere Fenster ein. Zum Kopieren drücke strg + v oder auf einem mac Apfeltaste + v.\r\r4. Klicke dann auf 'Importieren!' unten." +L.AMR_IMPORTTAB_INSTRUCTIONS_3 = "Füge den Text von AskMrRobot.com hier ein." +--ui/ReforgesTab.lua +--popup open reforge +L.AMR_REFORGESTAB_OPEN_WINDOW = "Du musst das Umschmidefenster öffnen, damit dies funktioniert." +L.AMR_REFORGESTAB_BUTTON_OK = "Ok" +--new +L.AMR_REFORGESTAB_TITLE = "Umschmiedungen" +L.AMR_REFORGESTAB_OPTIMAL = "Du bist 100% optimal umgeschmiedet!" +L.AMR_REFORGESTAB_INSTRUCTION = 'Öffne das Umschmiedefenster, klicke dann auf "Umschmieden!" damit dies automatisch ausgeführt wird.' +L.AMR_REFORGESTAB_BUTTON = "Umschmieden!" +L.AMR_REFORGESTAB_SLOT = "Platz" +L.AMR_REFORGESTAB_OPTIMAL_REFORGE = "Optimale Umschmiedung" +L.AMR_REFORGESTAB_RESTORE_THEN = 'Wiederherstellen, dann ' +L.AMR_REFORGESTAB_TOTAL_COST = "Gesamtkosten: ~%d Gold" +--ui/ShoppingListTab +--popup mail +L.AMR_SHOPPINGLISTTAB_OPEN_MAIL = "Du muss das Postfenster öffnen, damit dies funktioniert." +L.AMR_SHOPPINGLISTTAB_BUTTON_OK = "Ok" +--new +L.AMR_SHOPPINGLISTTAB_TITLE = "Einkaufsliste" +L.AMR_SHOPPINGLISTTAB_BUTTON_SEND = "abschicken!" +L.AMR_SHOPPINGLISTTAB_ENCHANT_MATERIALS = "VZMaterialien" +L.AMR_SHOPPINGLISTTAB_ENCHANTS = "Verzauberungen" +L.AMR_SHOPPINGLISTTAB_GEMS = "Edelsteine" +L.AMR_SHOPPINGLISTTAB_INCLUDE = "Inhalt:" +L.AMR_SHOPPINGLISTTAB_SEND_LIST_TO = "Sende Liste an" +L.AMR_SHOPPINGLISTTAB_WHISPER_CHANNEL = "Flüster oder sende an Channel wie /raid oder /guild." +L.AMR_SHOPPINGLISTTAB_SEND_JEWELCRAFT_ENCHANTER = "Sende an Juwe oder VZ :)" +L.AMR_SHOPPINGLISTTAB_TOTAL = "Total" +L.AMR_SHOPPINGLISTTAB_DONE = "EINKAUF ERLEDIGT!" +L.AMR_SHOPPINGLISTTAB_A_ROBOTS_WISHLIST = "Es sei denn du willst mir ein Geburtstagsgeschenk kaufen! Ich mag Titan Bolzen und Roboter Hunde... Oder war es Titan Hunde und Roboter Bolzen..." +L.AMR_SHOPPINGLISTTAB_DROPDOWN_FRIEND = "ein Freund" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_PARTY = "Gruppe" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_RAID = "Raid" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_GUILD = "Gilde" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_CHANNEL = "Channel" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_MAIL = "Post" +L.AMR_SHOPPINGLISTTAB_MAIL_ROBOT_MESSAGE = "Mr. Robot sagt ich brauche folgendes:\n" +L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_GE = 'Anfrage für Edelsteine und Verzauberungen' +L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_G = 'Anfrage für Edelsteine' +L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_E = 'Anfrage für Verzauberungen' +L.AMR_SHOPPINGLISTTAB_CHAT_ROBOT_MESSAGE = "Mr. Robot sagt ich brauche:" +--ui/SummaryTab.lua +L.AMR_SUMMARYTAB_TITLE = "Übersicht" +L.AMR_SUMMARYTAB_NO_IMPORT = "Du hast keine Optimierungen importiert." +L.AMR_SUMMARYTAB_GET_STARTED = 'Wechsel in die "Importkategorie" um zu beginnen.' +L.AMR_SUMMARYTAB_GO_UPGRADE = "Bitte werte die folgenden Gegenstände auf:" +L.AMR_SUMMARYTAB_SLOT = "Platz" +L.AMR_SUMMARYTAB_ITEM_NAME = "Gegenstandsname" +L.AMR_SUMMARYTAB_OPTIMAL = "Glückwunsch! Du bist 100% optimal" +L.AMR_SUMMARYTAB_LAST_IMPORT = "Letzter Import: ?\rDiese Optimierungen sind für ?" +L.AMR_SUMMARYTAB_OPTIMIZATIONS_TO_GO = "Du hast ? Optimierungen durchzuführen:" +L.AMR_SUMMARYTAB_GEMS_TO_GO = "? Edelsteine" +L.AMR_SUMMARYTAB_ENCHANTS_TO_GO = "? Verzauberungen" +L.AMR_SUMMARYTAB_REFORGES_TO_GO = "? Umschmiedungen" +L.AMR_SUMMARYTAB_VIEW_TABS = "Schaue in den Edelstein-,Verzauberungs- und Umschmiedungskategorien|n um die vorgeschlagenen Optimierungen zu sehen." +L.AMR_SUMMARYTAB_GEMCOUNT = "%d \1244Edelstein:Edelsteine;" +L.AMR_SUMMARYTAB_ENCHANTCOUNT = "%d \1244Verzauberung:Verzauberungen;" +L.AMR_SUMMARYTAB_REFORGECOUNT = "%d \1244Umschmiedung:Umschmiedungen;" +L.AMR_SUMMARYTAB_OPTIMIZATIONCOUNT = "Du hast %d \1244Optimierung:Optimierungen; zu machen:" +L.AMR_SUMMARYTAB_LAST_IMPORT_1 = "Letzer Import: %s\rDiese Optimierungen sind für %s" +L.AMR_SUMMARYTAB_LAST_IMPORT_2 = "Letzter Import: %s\rDiese Optimierungen sind für %s's..." +L.AMR_SUMMARYTAB_LAST_IMPORT_PSPEC = "Prim. Talentspezialisierung:|n %s" +L.AMR_SUMMARYTAB_LAST_IMPORT_SSPEC = "Sek. Talentspezialisierung:|n %s" +L.AMR_SUMMARYTAB_DIFF_REALM = "einen anderen Server: %s" +L.AMR_SUMMARYTAB_DIFF_TALENT = "andere Talente" +L.AMR_SUMMARYTAB_DIFF_GLYPHS = "andere Glyphen" +L.AMR_SUMMARYTAB_DIFF_GEAR = "Mr. Robot optimierte eine andere Rüstungszusammenstellung" +L.AMR_SUMMARYTAB_DIFF_AND = "und" +L.AMR_SUMMARYTAB_DIFF_PLEASE_EQ = ". Bitte rüste die folgenden Gegenstände aus bevor du fortfährst." +L.AMR_SUMMARYTAB_DIFF_CHECK_CHAR = "WARNUNG: Bitte überprüfe deinen Charackter bevor du fortfährst:" +L.AMR_SUMMARYTAB_DIFF_OPTIMIZED_FOR = "Mr. Robot optimierte für " +--showImportError +L.AMR_SUMMARYTAB_IMPORT_NOT_WORK = 'Fehler! Dein Import ist fehlgeschlagen:|n|n%s' +--ui/RobotStamp.lua +L.AMR_ROBOTSTAMP_TEXT = "ROBOT STAMP OF APPROVAL"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localization/localization.en.lua Thu Jul 10 12:24:59 2014 -0700 @@ -0,0 +1,534 @@ +local _, AskMrRobot = ... +AskMrRobot.L = {}; +local L = AskMrRobot.L; + +function AskMrRobot.format(fmt, ...) + local args, order = {...}, {} + + local f = fmt:gsub('%%(%d+)%$', function(i) + tinsert(order, args[tonumber(i)]) + return '%' + end) + + return f:format(unpack(order)) +end + +--AskMrRobotUi.lua +--validateInput +L.AMR_UI_IMPORT_ERROR_IMPROPER = "Oops, you didn't have proper import text" +L.AMR_UI_IMPORT_ERROR_IMPROPER_GOTO = "Please go back to AskMrRobot.com and grab optimizations for this character" +L.AMR_UI_IMPORT_ERROR_CHARACTER = "Oops, you've imported optimizations for %s" +L.AMR_UI_IMPORT_ERROR_CHARACTER_GOTO = "Please go back to AskMrRobot.com and grab optimizations for this character, who is much better looking anyway!" +L.AMR_UI_IMPORT_ERROR_RACE = "It looks like your race may have changed, which affects the optimizations." +L.AMR_UI_IMPORT_ERROR_RACE_CURRENT = "Right now, Mr. Robot thinks you are a %s" +L.AMR_UI_IMPORT_ERROR_FACTION = "It looks like your faction may have changed." +L.AMR_UI_IMPORT_ERROR_FACTION_CURRENT = "Right now, Mr. Robot thinks you belong to the %s" +L.AMR_UI_IMPORT_ERROR_PROFESSIONS = "Your professions have changed, which affects the optimizations." +L.AMR_UI_IMPORT_ERROR_PROFESSIONS_GOTO = "You will need to make sure your in-game professions match the professions on AskMrRobot.com when importing." +L.AMR_UI_IMPORT_ERROR_SPEC = "WARNING! Please check your character before proceeding:" +L.AMR_UI_IMPORT_ERROR_SPEC_CHANGE = "Change your spec to %s." +L.AMR_UI_IMPORT_ERROR_SPEC_UNEXPECTED = "AskMrRobot.com did not expect to see a specialization." +--createImportDetailsErrorTab +L.AMR_UI_IMPORT_ERROR_NO_IMPORT = 'You have no optimizations imported. Click the "Import" tab to get started.' +L.AMR_UI_IMPORT_ERROR_CANT_OPTIMIZE = "I can't optimize yet. Please go to the summary tab for more information." +--createTabButtons +L.AMR_UI_BUTTON_IMPORT = "Import" +L.AMR_UI_BUTTON_SUMMARY = "Summary" +L.AMR_UI_BUTTON_GEMS = "Gems" +L.AMR_UI_BUTTON_ENCHANTS = "Enchants" +L.AMR_UI_BUTTON_REFORGES = "Reforges" +L.AMR_UI_BUTTON_SHOPPING_LIST = "Shopping List" +L.AMR_UI_BUTTON_BEST_IN_BAGS = "Best in Bags" +L.AMR_UI_BUTTON_COMBAT_LOG = "Combat Log" +L.AMR_UI_BUTTON_HELP = "Help" +--AskMrRobot.lua +--eventListener:OnEvent +L.AMR_ON_EVENT_LOADED = "Loaded Ask Mr. Robot %s" +L.AMR_ON_EVENT_TOOLTIP = "Left Click to open the Ask Mr. Robot window.\n\nShift + Left Click to export your bag and bank data.\n\nCtrl + Left Click to mark a fight as a wipe." +--SlashCmdList.AMR +L.AMR_SLASH_COMMAND_TEXT_1 = 'Available AskMrRobot slash commands:\n' +L.AMR_SLASH_COMMAND_TEXT_2 = ' /amr show -- show the main window\n' +L.AMR_SLASH_COMMAND_TEXT_3 = ' /amr hide -- hide the main window\n' +L.AMR_SLASH_COMMAND_TEXT_4 = ' /amr toggle -- toggle the main window\n' +L.AMR_SLASH_COMMAND_TEXT_5 = ' /amr wipe -- logs a raid wipe. Used to ignore events in the fight after this point\n' +L.AMR_SLASH_COMMAND_TEXT_6 = ' /amr unwipe -- undo the last wipe command\n' +L.AMR_SLASH_COMMAND_TEXT_7 = ' /amr export -- export bag and bank data (uses your last selected method and either opens the copy/paste window, or saves and reloads ui)' +--config.lua +--frame:SetScript +L.AMR_CONFIG_EXIMPORT = "Mr. Robot's addon can export your item information to his website, and import your optimizations into the game." +L.AMR_CONFIG_CHECKBOX_MINIMAP_LABEL = "Show minimap icon" +L.AMR_CONFIG_CHECKBOX_MINIMAP_TOOLTIP_TITLE = "Minimap Icon" +L.AMR_CONFIG_CHECKBOX_MINIMAP_DESCRIPTION = "Show the Ask Mr. Robot minimap icon." +L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_LABEL = "Automatically show Mr. Robot's reforge window at the reforger" +L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_TOOLTIP_TITLE = "Auto-Show Reforges" +L.AMR_CONFIG_CHECKBOX_AUTOREFORGE_DESCRIPTION = "When you have suggested reforges left to complete, automatically show Mr. Robot's reforge window when you visit a reforger." +L.AMR_CONFIG_CHECKBOX_AUTOAH_LABEL = "Automatically show Mr. Robot's shopping list at the auction house" +L.AMR_CONFIG_CHECKBOX_AUTOAH_TOOLTIP_TITLE = "Auto-Show Shopping List" +L.AMR_CONFIG_CHECKBOX_AUTOAH_DESCRIPTION = "When your shopping list still has things left to buy, automatically show Mr. Robot's shopping list when you visit the auction house." +L.AMR_CONFIG_CHECKBOX_AUTOLOG_LABEL = "Automatically turn on combat logging for Siege of Orgrimmar" +L.AMR_CONFIG_CHECKBOX_AUTOLOG_TOOLTIP_TITLE = "Automatically Log Siege of Orgrimmar" +L.AMR_CONFIG_CHECKBOX_AUTOLOG_DESCRIPTION = "When entering Siege of Orgrimmar, combat logging will be turned on. When leaving Siege of Orgrimmar, combat logging will be turned off." +--enchants.lua +--enchantNames +L.AMR_ENCHANTS_BELT_BUCKLE = "Belt Buckle" +L.AMR_ENCHANTS_FROSTBRAND = "Frostbrand" +L.AMR_ENCHANTS_FLAMETONGUE = "Flametongue" +L.AMR_ENCHANTS_DAMAGE = "Damage" +L.AMR_ENCHANTS_SHARPENED = "Sharpened" +L.AMR_ENCHANTS_WEIGHTED = "Weighted" +L.AMR_ENCHANTS_ARMOR = "Armor" +L.AMR_ENCHANTS_MANA = "Mana" +L.AMR_ENCHANTS_SHADOW_OIL = "Shadow Oil" +L.AMR_ENCHANTS_FROST_OIL = "Frost Oil" +L.AMR_ENCHANTS_SUNDERED = "Sundered" +L.AMR_ENCHANTS_ALL_RESISTANCES = "All Resistances" +L.AMR_ENCHANTS_SCOPE = "Scope" +L.AMR_ENCHANTS_BEASTSLAYING = "Beastslaying" +L.AMR_ENCHANTS_HASTE = "Haste" +L.AMR_ENCHANTS_FIERY_BLAZE = "Enchant: Fiery Blaze" +L.AMR_ENCHANTS_STEEL_WPNCHAIN = "Steel Weapon Chain" +L.AMR_ENCHANTS_DODGE = "Dodge" +L.AMR_ENCHANTS_HEALTH = "Health" +L.AMR_ENCHANTS_MAX_HEALTH = "Maximum Health" +L.AMR_ENCHANTS_IRON_SPIKE = "Iron Spike (8-12)" +L.AMR_ENCHANTS_THORIUM_SPIKE = "Thorium Spike (20-30)" +L.AMR_ENCHANTS_FELSTEEL_SPIKE = "Felsteel Spike (26-38)" +L.AMR_ENCHANTS_TITANIUM_SPIKE = "Titanium Spike (45-67)" +L.AMR_ENCHANTS_ELEMENTIUM_SPIKE = "Elementium Spike (90-133)" +L.AMR_ENCHANTS_PYRIUM_SPIKE = "Pyrium Spike (210-350)" +L.AMR_ENCHANTS_GHOSTIRON_SPIKE = "Ghost Iron Spike (600-1000)" +L.AMR_ENCHANTS_ABSORPTION = "Absorption" +L.AMR_ENCHANTS_SPIRIT = "Spirit" +L.AMR_ENCHANTS_STR = "Str" +L.AMR_ENCHANTS_STAM = "Stam" +L.AMR_ENCHANTS_AGI = "Agi" +L.AMR_ENCHANTS_INT = "Int" +L.AMR_ENCHANTS_CRIT = "Crit" +L.AMR_ENCHANTS_EXP = "Exp" +L.AMR_ENCHANTS_PARRY = "Parry" +L.AMR_ENCHANTS_HIT = "Hit" +L.AMR_ENCHANTS_AP = "AP" +L.AMR_ENCHANTS_RESIL = "Resil" +L.AMR_ENCHANTS_MASTERY = "Mastery" +L.AMR_ENCHANTS_PVP_POW = "PvP Pow" +L.AMR_ENCHANTS_BLOCK = "Block" +L.AMR_ENCHANTS_SWORD_SKILL = "Sword Skill" +L.AMR_ENCHANTS_SWORD_SKILL_2H = "Two-Handed Sword Skill" +L.AMR_ENCHANTS_MACE_SKILL = "Mace Skill" +L.AMR_ENCHANTS_MACE_SKILL_2H = "Two-Handed Mace Skill" +L.AMR_ENCHANTS_AXE_SKILL = "Axe Skill" +L.AMR_ENCHANTS_AXE_SKILL_2H = "Two-Handed Axe Skill" +L.AMR_ENCHANTS_DAGGER_SKILL = "Dagger Skill" +L.AMR_ENCHANTS_GUN_SKILL = "Gun Skill" +L.AMR_ENCHANTS_BOW_SKILL = "Bow Skill" +L.AMR_ENCHANTS_BEAST_SLAYING = "Beast Slaying" +L.AMR_ENCHANTS_ON_GET_HIT_SBOLT = "On Get Hit: Shadow Bolt" +L.AMR_ENCHANTS_SP = "SP" +L.AMR_ENCHANTS_FIRE_SPELL_DAMAGE = "Fire Spell Damage" +L.AMR_ENCHANTS_HOLY_SPELL_DAMAGE = "Holy Spell Damage" +L.AMR_ENCHANTS_FROST_SPELL_DAMAGE = "Frost Spell Damage" +L.AMR_ENCHANTS_NATURE_SPELL_DAMAGE = "Nature Spell Damage" +L.AMR_ENCHANTS_SHADOW_SPELL_DAMAGE = "Shadow Spell Damage" +L.AMR_ENCHANTS_ARCANE_SPELL_DAMAGE = "Arcane Spell Damage" +L.AMR_ENCHANTS_WEAPON_DAMAGE = "Weapon Damage" +L.AMR_ENCHANTS_FIRE_RESISTANCE = "Fire Resistance" +L.AMR_ENCHANTS_FROST_RESISTANCE = "Frost Resistance" +L.AMR_ENCHANTS_SHADOW_RESISTANCE = "Shadow Resistance" +L.AMR_ENCHANTS_NATURE_RESISTANCE = "Nature Resistance" +L.AMR_ENCHANTS_ARCANE_RESISTANCE = "Arcane Resistance" +L.AMR_ENCHANTS_ALL_STATS = "All Stats" +L.AMR_ENCHANTS_RUN_SPEED = "Run Speed" +L.AMR_ENCHANTS_RESIST_ALL = "Resist All" +L.AMR_ENCHANTS_FISHING_LURE = "Fishing Lure" +L.AMR_ENCHANTS_FISHING_SKILL = "Fisching Skill" +L.AMR_ENCHANTS_WINDFURY = "Windfury" +L.AMR_ENCHANTS_WEAPON_FIRE_DMG = "Weapon Fire Damage" +L.AMR_ENCHANTS_ORB_OF_FIRE = "Orb of Fire" +L.AMR_ENCHANTS_BLACK_TEMPLE_DUMMY = "Black Temple Dummy" +L.AMR_ENCHANTS_MITHRIL_SPIKE = "Mithril Spike (16-20)" +L.AMR_ENCHANTS_MOUNT_SPEED = "Mount Speed" +L.AMR_ENCHANTS_STEALTH = "Stealth" +L.AMR_ENCHANTS_SCHIELD_BLOCK = "Shield Block" +L.AMR_ENCHANTS_FIERY_WEAPON = "Fiery Weapon" +L.AMR_ENCHANTS_MINING = "Mining" +L.AMR_ENCHANTS_HERBALISM = "Herbalism" +L.AMR_ENCHANTS_SKINNING = "Skinning" +L.AMR_ENCHANTS_FISHING = "Fishing" +L.AMR_ENCHANTS_OMEN_OF_CLARITY = "Omen of Clarity" +L.AMR_ENCHANTS_MHTEST02 = "MHTest02" +L.AMR_ENCHANTS_COLD_BLOOD = "Cold Blood" +L.AMR_ENCHANTS_FIRESTONE_1 = "Firestone 1" +L.AMR_ENCHANTS_FIRESTONE_2 = "Firestone 2" +L.AMR_ENCHANTS_FIRESTONE_3 = "Firestone 3" +L.AMR_ENCHANTS_FIRESTONE_4 = "Firestone 4" +L.AMR_ENCHANTS_FIRESTONE_5 = "Firestone 5" +L.AMR_ENCHANTS_FIRESTONE_MASTER = "Master Firestone" +L.AMR_ENCHANTS_FIRESTONE = "Firestone" +L.AMR_ENCHANTS_FIRESTONE_GREATER = "Greater Firestone" +L.AMR_ENCHANTS_FIRESTONE_MAJOR = "Major Firestone" +L.AMR_ENCHANTS_FIRESTONE_FEL = "Fel Firestone" +L.AMR_ENCHANTS_FIRESTONE_GRAND = "Grand Firestone" +L.AMR_ENCHANTS_SPELLSTONE = "Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_GREATER = "Greater Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_MAJOR = "Major Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_MASTER = "Master Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_DEMONIC = "Demonic Spellstone" +L.AMR_ENCHANTS_SPELLSTONE_GRAND = "Grand Spellstone" +L.AMR_ENCHANTS_ICY_CHILL = "Icy Chill" +L.AMR_ENCHANTS_LIFESTEALING = "Lifestealing" +L.AMR_ENCHANTS_UNHOLY_WEAPON = "Unholy Weapon" +L.AMR_ENCHANTS_CRUSADER = "Crusader" +L.AMR_ENCHANTS_BLOCK_LEVEL = "Block Level" +L.AMR_ENCHANTS_RANGED_ATTACK_POWER = "Ranged Attack Power" +L.AMR_ENCHANTS_MANA_EVERY_5_SEC = "mana every 5 sec." +L.AMR_ENCHANTS_HEALTH_EVERY_5_SEC = "health every 5 sec." +L.AMR_ENCHANTS_MELEE_CRIT_STRIKE = "Melee Critical Strike" +L.AMR_ENCHANTS_ZZOLDBLANK = "zzOLDBlank" +L.AMR_ENCHANTS_THREAT = "Threat" +L.AMR_ENCHANTS_SHADOW_SPELL_POWER = "Shadow Spell Power" +L.AMR_ENCHANTS_FROST_SPELL_POWER = "Frost Spell Power" +L.AMR_ENCHANTS_FIRE_SPELL_POWER = "Fire Spell Power" +L.AMR_ENCHANTS_REDUCED_THREAT = "Reduced Threat" +L.AMR_ENCHANTS_WIZARD_OIL_MINOR = "Minor Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_LESSER = "Lesser Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL = "Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_BRILLIANT = "Brilliant Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_SUPERIOR = "Superior Wizard Oil" +L.AMR_ENCHANTS_WIZARD_OIL_EXCEPTIONAL = "Exceptional Wizard Oil" +L.AMR_ENCHANTS_MANA_OIL_MINOR = "Minor Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_LESSER = "Lesser Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_BRILLIANT = "Brilliant Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_SUPERIOR = "Superior Mana Oil" +L.AMR_ENCHANTS_MANA_OIL_EXCEPTIONAL = "Exceptional Mana Oil" +L.AMR_ENCHANTS_ELEMENTAL_SLAYER = "Elemental Slayer" +L.AMR_ENCHANTS_DEMONSLAYING = "Demonslaying" +L.AMR_ENCHANTS_VENOMHIDE_POISON = "Venomhide Poison" +L.AMR_ENCHANTS_ARCANE_FIRE_SPELL_POWER = "Arcane and Fire Spell Power" +L.AMR_ENCHANTS_SHADOW_FROST_SPELL_POWER = "Shadow and Frost Spell Power" +L.AMR_ENCHANTS_MONGOOSE = "Mongoose" +L.AMR_ENCHANTS_SPELLSURGE = "Spellsurge" +L.AMR_ENCHANTS_BATTLEMASTER = "Battlemaster" +L.AMR_ENCHANTS_AP_VS_UNDEAD = "Attack Power vs Undead" +L.AMR_ENCHANTS_SP_VS_UNDEAD = "Spell Power vs Undead" +L.AMR_ENCHANTS_AGI_PER_GEM = "Agility per different colored gem" +L.AMR_ENCHANTS_STR_4_BLUE_GEMS = "Strength if 4 blue gems equipped" +L.AMR_ENCHANTS_LESSER_RUNE_WARDING = "Lesser Rune of Warding" +L.AMR_ENCHANTS_GREATER_RUNE_WARDING = "Greater Rune of Warding" +L.AMR_ENCHANTS_LESSER_WARD_SHIELDING = "Lesser Ward of Shielding" +L.AMR_ENCHANTS_GREATER_WARD_SHIELDING = "Greater Ward of Shielding" +L.AMR_ENCHANTS_ZZOLDLESSER_RUNE_WARDING = "ZZOLDLesser Rune of Warding" +L.AMR_ENCHANTS_COMFORT_INSOLES = "Comfortable Insoles" +L.AMR_ENCHANTS_ARCANE_DAMAGE = "Arcane Damage" +L.AMR_ENCHANTS_FIRE_DAMAGE = "Fire Damage" +L.AMR_ENCHANTS_NATURE_DAMAGE = "Nature Damage" +L.AMR_ENCHANTS_FROST_DAMAGE = "Frost Damage" +L.AMR_ENCHANTS_SHADOW_DAMAGE = "Shadow Damage" +L.AMR_ENCHANTS_HEALING = "Healing" +L.AMR_ENCHANTS_BLOODY_DANCING_STEEL = "Bloody Dancing Steel" +L.AMR_ENCHANTS_TYRANNY = "Tyranny" +L.AMR_ENCHANTS_SOCKET_BELT = "Socket Belt" +L.AMR_ENCHANTS_USE_WALK_ON_WATER = "Use: Allows you to walk on water and increases swim speed for up to 6 sec. (30 Sec Cooldown)" +L.AMR_ENCHANTS_BREATH_AGILE_PRINCE = "Breath of the Agile Prince" +L.AMR_ENCHANTS_USE_REDUCE_FALLING_SPEED_10SEC = "Use: Reduce your fall speed for 10 sec. (5 Min Cooldown) (5 Min Cooldown)" +L.AMR_ENCHANTS_USE_REDUCE_FALLING_SPEED_30SEC = "Use: Reduces your falling speed for 30 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_REDUCE_FALLING_SPEED_2MIN = "Use: Reduces your falling speed for 2 min. (3 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_INT_AGI_STR_480 = "Use: Increases your Intellect, Agility, or Strength by 480 for 10 sec. Your highest stat is always chosen. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_INT_AGI_STR_1920 = "Use: Increases your Intellect, Agility, or Strength by 1,920 for 10 sec. Your highest stat is always chosen. (1 Min Cooldown)" +L.AMR_ENCHANTS_SWORDGUARD_EMBROIDERY = "Swordguard Embroidery" +L.AMR_ENCHANTS_SWORDGUARD_1 = "Swordguard 1" +L.AMR_ENCHANTS_SWORDGUARD_2 = "Swordguard 2" +L.AMR_ENCHANTS_SWORDGUARD_3 = "Swordguard 3" +L.AMR_ENCHANTS_DARKGLOW_1 = "Darkglow 1" +L.AMR_ENCHANTS_DARKGLOW_2 = "Darkglow 2" +L.AMR_ENCHANTS_DARKGLOW_3 = "Darkglow 3" +L.AMR_ENCHANTS_LIGHTWEAVE_1 = "Lightweave 1" +L.AMR_ENCHANTS_LIGHTWEAVE_2 = "Lightweave 2" +L.AMR_ENCHANTS_LIGHTWEAVE_3 = "Lightweave 3" +L.AMR_ENCHANTS_PANDAREN_FISHING_LURE = "Pandaren Fishing Lure" +L.AMR_ENCHANTS_MAGIC_WEAPON = "Magic Weapon" +L.AMR_ENCHANTS_USE_MYTHICAL_HEALING_POTION = "Use: Injects a Mythical Healing Potion directly into your bloodstream, increasing potency and healing you for 30,000. (1 Min Cooldown)" +L.AMR_ENCHANTS_PLACEHOLDER_SHOULDER = "Placeholder Shoulder Enchant" +L.AMR_ENCHANTS_PANDEMONIUM = "Pandamonium" +L.AMR_ENCHANTS_MIRROR_SCOPE = "Mirror Scope" +L.AMR_ENCHANTS_BLASTINGTON = "Blastington's" +L.AMR_ENCHANTS_USE_EXPLOSIVE_FIREWORKS = "Use: Launches a cluster of highly explosive fireworks that detonate on impact for 14,000 Fire damage over 3 sec. (45 Sec Cooldown)" +L.AMR_ENCHANTS_USE_DODGE = "Use: Increases your dodge by 480 for 10 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_SAMURAI = "Samurai" +L.AMR_ENCHANTS_RIVERS_SONG = "River's Song" +L.AMR_ENCHANTS_COLOSSUS = "Colossus" +L.AMR_ENCHANTS_DANCING_STEEL = "Dancing Steel" +L.AMR_ENCHANTS_ELEMENTAL_FORCE = "Elemental Force" +L.AMR_ENCHANTS_JADE_SPIRIT = "Jade Spirit" +L.AMR_ENCHANTS_WINDSONG = "Windsong" +L.AMR_ENCHANTS_FLINTLOCKE = "Flintlocke's" +L.AMR_ENCHANTS_USE_RUN_SPEED = "Use: Greatly increase your run speed for 5 sec. (3 Min Cooldown)" +L.AMR_ENCHANTS_USE_MENTAL_COMBAT = "Use: Engage in mental combat with a humanoid target in an attempt to pacify or control them. (10 Min Cooldown)" +L.AMR_ENCHANTS_USE_CARDBOARD_ASSASSIN = "Use: Summons a Cardboard Assassin to draw the attention of enemies. (5 Min Cooldown)" +L.AMR_ENCHANTS_USE_SHIELD_OF_FORCE = "Use: Protects you with a shield of force that stops 18,000 damage for 8 sec. The strong magnetic field sometimes has strange side effects... (5 Min Cooldown)" +L.AMR_ENCHANTS_USE_PERSONAL_INVISIBILITY_FIELD = "Use: Activates a personal invisibility field. Cannot be used in combat. (3 Min Cooldown)" +L.AMR_ENCHANTS_USE_ELECTRIC_BALL = "Use: Fires an electrified ball at an enemy for 4,800 Nature damage. (2 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_ARMOR_700 = "Use: Increases your armor by 700 for 14 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_ARMOR_1500 = "Use: Increases your armor by 1,500 for 13 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_GNOMISH_XRAY = "Gnomish X-Ray" +L.AMR_ENCHANTS_LANDSLIDE = "Landslide" +L.AMR_ENCHANTS_WINDWALK = "Windwalk" +L.AMR_ENCHANTS_POWER_TORRENT = "Power Torrent" +L.AMR_ENCHANTS_HEARTSONG = "Heartsong" +L.AMR_ENCHANTS_HURRICANE = "Hurricane" +L.AMR_ENCHANTS_AVALANCHE = "Avalanche" +L.AMR_ENCHANTS_MENDING = "Mending" +L.AMR_ENCHANTS_NERUBIAN_CARAPACE = "Nerubian Carapace" +L.AMR_ENCHANTS_BLOOD_DRAINING = "Blood Draining" +L.AMR_ENCHANTS_BLADE_WARD = "Blade Ward" +L.AMR_ENCHANTS_TITANIUM_PLATING = "Titanium Plating" +L.AMR_ENCHANTS_SOCKET_STAFF = "Socket Staff" +L.AMR_ENCHANTS_STONESKIN_GARGOYLE = "Stoneskin Gargoyle" +L.AMR_ENCHANTS_BERSERKING = "Berserking" +L.AMR_ENCHANTS_BLACK_MAGIC = "Black Magic" +L.AMR_ENCHANTS_SOCKET_GLOVES = "Socket Gloves" +L.AMR_ENCHANTS_SOCKET_BRACERS = "Socket Bracer" +L.AMR_ENCHANTS_CHANCE_INCREASE_MELEE_RANGED_ASPEED = "Chance to Increase Melee/Ranged Attack Speed" +L.AMR_ENCHANTS_SWORDBREAKING = "Swordbreaking" +L.AMR_ENCHANTS_SPELLBREAKING = "Spellbreaking" +L.AMR_ENCHANTS_USE_STUN_MECH_UNITS_1MIN = "Use: Stuns all nearby Mechanical units for 3 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_THERMAL_GRENADE = "Use: Detatch and throw a thermal grenade, inflicting 10,000 Fire damage and incapacitating targets for 3 sec in a 3 yard radius. Any damage will break the effect. (1 Min Cooldown)" +L.AMR_ENCHANTS_USE_EXPLOSIVE_ROCKET = "Use: Fires an explosive rocket at an enemy for 1,165 Fire damage. (45 Sec Cooldown)" +L.AMR_ENCHANTS_USE_INCREASE_HASTE_240 = "Use: Increases your haste by 240 for 12 sec. (1 Min Cooldown)" +L.AMR_ENCHANTS_CHANCE_INCREASE_SPELL_CAST_SPEED = "Chance to Increase Spell Cast Speed" +L.AMR_ENCHANTS_MELEEDMG_STUN_TARGET = "Melee Damage and Chance to Stun Target" +L.AMR_ENCHANTS_BLOCK_VALUE = "Block Value" +L.AMR_ENCHANTS_GEM_TEST = "gem test enchantment" +L.AMR_ENCHANTS_ROCKBITER = "Rockbiter" +L.AMR_ENCHANTS_AP_VS_UNDEAD_DEMONS = "Attack Power vs Undead and Demons" +L.AMR_ENCHANTS_POISON = "Poison" +L.AMR_ENCHANTS_ADAMANTITE_WEAPON_CHAIN = "Adamantite Weapon Chain" +L.AMR_ENCHANTS_EXECUTIONER = "Executioner" +L.AMR_ENCHANTS_GATHERER = "Gatherer" +L.AMR_ENCHANTS_ICEBREAKER_WEAPON = "Icebreaker Weapon" +L.AMR_ENCHANTS_LIFEWARD = "Lifeward" +L.AMR_ENCHANTS_ICEWALKER = "Icewalker" +L.AMR_ENCHANTS_GIANTSLAYING = "Giantslaying" +L.AMR_ENCHANTS_BLESSED_WEAPON_COATING = "Blessed Weapon Coating" +L.AMR_ENCHANTS_RIGHTEOUS_WEAPON_COATING = "Righteous Weapon Coating" +L.AMR_ENCHANTS_DEATHFROST = "Deathfrost" +L.AMR_ENCHANTS_TEST_RIDING_CROP = "Test Riding Crop Enchant" +L.AMR_ENCHANTS_TEST_ADD_SOCKETS_ENCHANT = "Test Add Sockets Enchant" +L.AMR_ENCHANTS_TEST_SKILL_REQ_ENCHANT = "Test Skill Req Enchant" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN = "Frozen Rune Weapon" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_2 = "Frozen Rune Weapon 2" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_3 = "Frozen Rune Weapon 3" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_4 = "Frozen Rune Weapon 4" +L.AMR_ENCHANTS_FROZEN_RUNE_WPN_5 = "Frozen Rune Weapon 5" +L.AMR_ENCHANTS_QA_TEST_BLANK_PURPLE_GEM = "QA Test Blank Purple Gem Enchant" +L.AMR_ENCHANTS_NORTHREND_FLIGHT = "Northrend Flight" +L.AMR_ENCHANTS_EARTHLIVING = "Earthliving" +L.AMR_ENCHANTS_EMPOWER_RUNE_WPN = "Empower Rune Weapon" +L.AMR_ENCHANTS_SWORDSHATTERING = "Swordshattering" +L.AMR_ENCHANTS_LICHBANE = "Lichbane" +L.AMR_ENCHANTS_SPELLSHATTERING = "Spellshattering" +L.AMR_ENCHANTS_FALLEN_CRUSADER = "Fallen Crusader" +L.AMR_ENCHANTS_CINDERGLACIER = "Cinderglacier" +L.AMR_ENCHANTS_RAZORICE = "Razorice" +--gems.lua +--alternateGemName +L.AMR_GEMS_INT = "Int" +L.AMR_GEMS_STR = "Str" +L.AMR_GEMS_AGI = "Agi" +L.AMR_GEMS_CRIT = "Crit" +L.AMR_GEMS_HASTE = "Haste" +L.AMR_GEMS_HIT = "Hit" +L.AMR_GEMS_PVP_POW = "PvP Pow" +L.AMR_GEMS_STAM = "Stam" +L.AMR_GEMS_DODGE = "Dodge" +L.AMR_GEMS_SPIRIT = "Spirit" +L.AMR_GEMS_PARRY = "Parry" +L.AMR_GEMS_RESIL = "Resil" +L.AMR_GEMS_EXP = "Exp" +L.ARMS_GEM_MASTERY = "Mastery" +L.AMR_GEMS_CRIT_EFF = "Crit Efct" +L.AMR_GEMS_BLOCK = "Block" +L.AMR_GEMS_MANA = "Mana" +L.AMR_GEMS_REFLECT = "Reflect" +L.AMR_GEMS_SNARE = "Snare" +L.AMR_GEMS_SILENCE = "Silence" +L.AMR_GEMS_ARMOR = "Armor" +L.AMR_GEMS_FEAR = "Fear" +L.AMR_GEMS_THREAT = "Threat" +L.AMR_GEMS_RUN_SPEED = "Run Speed" +L.AMR_GEMS_INDOMITABLE = "Indomitable" +L.AMR_GEMS_COURAGEOUS = "Courageous" +L.AMR_GEMS_CAPACITIV = "Capacitive" +L.AMR_GEMS_SINISTER = "Sinister" +L.AMR_GEMS_STUN = "Stun" +--autoGemHelper +L.AMR_GEMS_NOT_ENOUGH_SOCKETS = 'Ask Mr Robot: Something is wrong. There are not enough sockets on this item.' +--wait.lua +--wait +L.AMR_WAIT_BAD_ARGUMENTS = "Bad Arguments to amr__wait" +--dir ui +--ui/CombatLogTab.lua +L.AMR_COMBATLOGTAB_COMBAT_LOGGING = "Combat Logging" +L.AMR_COMBATLOGTAB_START_LOGGING = "Start Logging" +L.AMR_COMBATLOGTAB_CURRENTLY_LOGGING = "|c0000ff00Currently Logging|r" +L.AMR_COMBATLOGTAB_STOP_LOGGING = "Stop Logging" +L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_LABEL = "Always log Siege of Orgrimmar" +L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_TOOLTIP_TITLE = "Auto-Log Siege of Orgrimmar" +L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_DESCRIPTION = "Automatically start logging when you enter SoO and stop when you leave SoO.\n\nNote that you should disable similar features in other addons to avoid conflicts." +L.AMR_COMBATLOGTAB_AUTOMATIC = "Automatic:" +L.AMR_COMBATLOGTAB_HEADLINE_OVER_BUTTON = "Save Characters" +L.AMR_COMBATLOGTAB_SAVE_CHARACTER = "Save Character Data" +L.AMR_COMBATLOGTAB_INSTRUCTIONS = "INSTRUCTIONS" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_1 = "1. Use the Start/Stop buttons or check 'Always log Siege of Orgrimmar'." +L.AMR_COMBATLOGTAB_INSTRUCTIONS_2 = "2. When you are ready to upload, press 'Save Character Data'. *" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_3 = "3. Exit World of Warcraft. **" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_4 = "4. Launch the Ask Mr. Robot client and follow the instructions. ***" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_5 = "|c00999999* This will reload your UI to ensure that all collected data is saved to disk. This step is not necessary if you log out of the game before uploading.|r" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_6 = "|c00999999** Exiting WoW before uploading your combat log is optional, but highly recommended. This prevents your log file from getting ridiculously large and slowing down your uploads.|r" +L.AMR_COMBATLOGTAB_INSTRUCTIONS_7 = "|c00999999*** You can download the client program at|r |c003333ffhttp://www.askmrrobot.com/wow/combatlog/upload|r|c00999999.|r" +L.AMR_COMBATLOGTAB_IS_LOGGING = "You are now logging combat, and Mr. Robot is logging character data for your raid." +L.AMR_COMBATLOGTAB_STOPPED_LOGGING = "Combat logging has been stopped." +L.AMR_COMBATLOGTAB_INFIGHT = "In-Fight Options" +L.AMR_COMBATLOGTAB_WIPE_1 = "|c00aaaaaaDeclare a wipe |r|c00ffffffbefore|r|c00aaaaaa you die on purpose.|r" +L.AMR_COMBATLOGTAB_WIPE_2 = "|c00aaaaaaThis will ignore intentional deaths & damage.|r" +L.AMR_COMBATLOGTAB_WIPE_3 = "|c00999999This feature must be used by the person logging combat.|r" +L.AMR_COMBATLOGTAB_SAVE_CHARACTER_INFO = "While you are logging combat, character & gear data is collected for everyone in the raid who has this mod installed. At the end of the raid, the person logging needs to click the button to save the data so it can be uploaded." +L.AMR_COMBATLOGTAB_LASTWIPE = '|c00ff0000Last wipe called on %s at %s.|r' +L.AMR_COMBATLOGTAB_WIPE_CHAT = "It's a wipe, everybody die!" +L.AMR_COMBATLOGTAB_WIPE_MSG = "[AskMrRobot] Manual wipe called at %s" +L.AMR_COMBATLOGTAB_NOWIPES = '[AskMrRobot] There is no recent manual wipe to remove' +L.AMR_COMBATLOGTAB_UNWIPE_MSG = "[AskMrRobot] Manual wipe at %s was removed" +--ui/EnchantTab.lua +L.AMR_ENCHANTTAB_ENCHANTS = "Enchants" +L.AMR_ENCHANTTAB_100_OPTIMAL = "Your enchants are 100% optimal!" +L.AMR_ENCHANTTAB_SLOT = "Slot" +L.AMR_ENCHANTTAB_CURRENT = "Current" +L.AMR_ENCHANTTAB_OPTIMIZED = "Optimized" +L.AMR_ENCHANTTAB_TESTSLOT = "TestSlot" +--ui/ExportTab.lua +L.AMR_EXPORTTAB_EXPORT_BB = "Export Gear for Best in Bags" +L.AMR_EXPORTTAB_COPY_PASTE = "Copy/Paste" +L.AMR_EXPORTTAB_AMR_CLIENT = "AMR Client" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT = "COPY/PASTE EXPORT" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_1 = "1. Open your bank" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_2 = "2. Copy the text below by pressing Ctrl+C (or Cmd+C on a Mac)" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_3 = "3. Go to AskMrRobot.com and paste into the IMPORT window" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_4 = "(located to the right of your character name near the top of the web page, see screenshot)" +L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_NOTE = "NOTE: If you change something while this window is open, press the Update button below to generate a new export string." +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT = "AMR CLIENT EXPORT" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_1 = "1. Open your bank" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_2 = "2. Press the button below to update your AskMrRobot.lua file" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_3 = "3. Go to AskMrRobot.com and press REFRESH" +L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_4 = "(located to the right of your character name near the top of the web page, see screenshot:)" +--ui/GemTab.lua +--popup autogem finished +L.AMR_GEMTAB_FINISHED = "Mr. Robot finished auto-gemming. \rIf some items aren't gemmed, you may need to acquire more gems. \rIf your belt isn't gemmed, you may still need to buy a belt buckle." +L.AMR_GEMTAB_BUTTON_OK = "Ok" +--popup autogem once +L.AMR_GEMTAB_AUTOGEMMING_IN_PROGRESS = "Autogemming already in progress." +--constructor +L.AMR_GEMTAB_GEMS = "Gems" +L.AMR_GEMTAB_OPTIMAL = "Your gems are 100% optimal! You are truly, truly outrageous." +L.AMR_GEMTAB_X_OPTIMIZE = "You have X gems to optimize" +L.AMR_GEMTAB_AUTOGEM_BUTTON = "Auto Gem! (BETA)" +L.AMR_GEMTAB_PREFER_PERFECT = "Prefer Perfect" +L.AMR_GEMTAB_SLOT = "Slot" +L.AMR_GEMTAB_CURRENT = "Current" +L.AMR_GEMTAB_OPTIMIZED = "Optimized" +--Update +L.AMR_GEMTAB_TO_OPTIMIZE = "You have %d \1244gem:gems; to optimize" +--ui/HelpTab.lua +L.AMR_HELPTAB_TITLE = "Help" +L.AMR_HELPTAB_LINK = "Visit |c003333ffhttp://blog.askmrrobot.com/addon/|r for a full tutorial and to ask questions.\r\r" +L.AMR_HELPTAB_Q1 = "|c00999999Q:|r Do I have to get a new text-string every time I need to optimize?\r" +L.AMR_HELPTAB_A1 = '|c0066dd66A:|r Yes. Go to the website and click the green "Update from Armory" button to the left of your character to make sure you have the most up-to-date gear. Optimize your gear and then click the "Export to Addon" button to get your new text-string.\r\r' +L.AMR_HELPTAB_Q2 = "|c00999999Q:|r The belt buckle didn't show up in my list.\r" +L.AMR_HELPTAB_A2 = "|c0066dd66A:|r Correct, it's actually quite hard to detect it's status in-game, believe it or not. But we're working on a clever way to detect it!\r\r" +L.AMR_HELPTAB_Q3 = "|c00999999Q:|r My cogwheels/tinkers didn't show up.\r" +L.AMR_HELPTAB_A3 = "|c0066dd66A:|r Correct, we're working on adding those into the list as well... the problem is Mr. Robot has been using them to build other robots...\r\r" +L.AMR_HELPTAB_Q4 = "|c00999999Q:|r Can I send my shopping list to an alt?\r" +L.AMR_HELPTAB_A4 = '|c0066dd66A:|r Yes, go to the shopping list tab and select the "mail" option in the drop down. You can mail the list to your alt.\r\r' +L.AMR_HELPTAB_Q5 = "|c00999999Q:|r I am in the middle of a raid and just won a piece of loot. Can I optimize really quick\r" +L.AMR_HELPTAB_A5= "|c0066dd66A:|r Yes! You'll want to read the tutorial on that here: |c003333ffhttp://blog.askmrrobot.com/addon#raid|r" +--ui/ImportTab.lua +--new +L.AMR_IMPORTTAB_BUTTON = "Import!" +L.AMR_IMPORTTAB_TITLE = "Import Mr. Robot's optimizations" +L.AMR_IMPORTTAB_INSTRUCTIONS_1 = "1. Go to our website, optimize, then click the 'export to addon' button found just above the stats section." +L.AMR_IMPORTTAB_INSTRUCTIONS_2 = "2. A window will popup, copy the text from that window.\r\r3. Return here and paste the text into the window below. To paste it, hold ctrl + v, or on a mac apple + v.\r\r4. Click the 'Import' button below" +L.AMR_IMPORTTAB_INSTRUCTIONS_3 = "Paste text from AskMrRobot.com here." +--ui/ReforgesTab.lua +--popup open reforge +L.AMR_REFORGESTAB_OPEN_WINDOW = "You need to open the reforge window for this to work" +L.AMR_REFORGESTAB_BUTTON_OK = "Ok" +--new +L.AMR_REFORGESTAB_TITLE = "Reforges" +L.AMR_REFORGESTAB_OPTIMAL = "Your reforges are 100% optimal!" +L.AMR_REFORGESTAB_INSTRUCTION = 'Open a reforge window, then click the "Reforge!" button to do it automatically.' +L.AMR_REFORGESTAB_BUTTON = "Reforge!" +L.AMR_REFORGESTAB_SLOT = "Slot" +L.AMR_REFORGESTAB_OPTIMAL_REFORGE = "Optimal Reforge" +L.AMR_REFORGESTAB_RESTORE_THEN = 'Restore, then ' +L.AMR_REFORGESTAB_TOTAL_COST = "Total reforge cost: ~%d Gold" +--ui/ShoppingListTab +--popup mail +L.AMR_SHOPPINGLISTTAB_OPEN_MAIL = "You need to open the mail window for this to work" +L.AMR_SHOPPINGLISTTAB_BUTTON_OK = "Ok" +--new +L.AMR_SHOPPINGLISTTAB_TITLE = "Shopping List" +L.AMR_SHOPPINGLISTTAB_BUTTON_SEND = "send it!" +L.AMR_SHOPPINGLISTTAB_ENCHANT_MATERIALS = "Enchant Materials" +L.AMR_SHOPPINGLISTTAB_ENCHANTS = "Enchants" +L.AMR_SHOPPINGLISTTAB_GEMS = "Gems" +L.AMR_SHOPPINGLISTTAB_INCLUDE = "Include:" +L.AMR_SHOPPINGLISTTAB_SEND_LIST_TO = "Send list to" +L.AMR_SHOPPINGLISTTAB_WHISPER_CHANNEL = "Whisper to a friend or send to a channel, like /raid or /guild." +L.AMR_SHOPPINGLISTTAB_SEND_JEWELCRAFT_ENCHANTER = "Send to a Jewelcraft or Enchanter friend :)" +L.AMR_SHOPPINGLISTTAB_TOTAL = "Total" +L.AMR_SHOPPINGLISTTAB_DONE = "YOUR SHOPPING IS ALL DONE!" +L.AMR_SHOPPINGLISTTAB_A_ROBOTS_WISHLIST = "Unless you want to buy me a birthday present! I like titanium bolts and robot dogs... Or was it titanium dogs and robot bolts..." +L.AMR_SHOPPINGLISTTAB_DROPDOWN_FRIEND = "a friend" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_PARTY = "party" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_RAID = "raid" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_GUILD = "guild" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_CHANNEL = "channel" +L.AMR_SHOPPINGLISTTAB_DROPDOWN_MAIL = "mail" +L.AMR_SHOPPINGLISTTAB_MAIL_ROBOT_MESSAGE = "Mr. Robot says I need the following to optimize my gear:\n" +L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_GE = 'Request for gems and enchants' +L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_G = 'Request for gems' +L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_E = 'Request for enchants' +L.AMR_SHOPPINGLISTTAB_CHAT_ROBOT_MESSAGE = "Mr. Robot says I need" +--ui/SummaryTab.lua +L.AMR_SUMMARYTAB_TITLE = "Summary" +L.AMR_SUMMARYTAB_NO_IMPORT = "You have no optimizations imported." +L.AMR_SUMMARYTAB_GET_STARTED = 'Click the "Import" tab to get started.' +L.AMR_SUMMARYTAB_GO_UPGRADE = "Please upgrade the following items:" +L.AMR_SUMMARYTAB_SLOT = "Slot" +L.AMR_SUMMARYTAB_ITEM_NAME = "Item Name" +L.AMR_SUMMARYTAB_OPTIMAL = "Congratulations! You are 100% optimal" +L.AMR_SUMMARYTAB_LAST_IMPORT = "Last import: ?\rThese optimizations are for ?" +L.AMR_SUMMARYTAB_OPTIMIZATIONS_TO_GO = "You have ? optimizations to make:" +L.AMR_SUMMARYTAB_GEMS_TO_GO = "? gems" +L.AMR_SUMMARYTAB_ENCHANTS_TO_GO = "? enchants" +L.AMR_SUMMARYTAB_REFORGES_TO_GO = "? reforges" +L.AMR_SUMMARYTAB_VIEW_TABS = "View the Gem, Enchant and Reforge tabs for suggested optimizations." +L.AMR_SUMMARYTAB_GEMCOUNT = "%d \1244gem:gems;" +L.AMR_SUMMARYTAB_ENCHANTCOUNT = "%d \1244enchant:enchants;" +L.AMR_SUMMARYTAB_REFORGECOUNT = "%d \1244reforge:reforges;" +L.AMR_SUMMARYTAB_OPTIMIZATIONCOUNT = "You have %d \1244optimization:optimizations; to make:" +L.AMR_SUMMARYTAB_LAST_IMPORT_1 = "Last import: %s\rThese optimizations are for %s" +L.AMR_SUMMARYTAB_LAST_IMPORT_2 = "Last import: %s\rThese optimizations are for %s's..." +L.AMR_SUMMARYTAB_LAST_IMPORT_PSPEC = "Primary Spec - %s" +L.AMR_SUMMARYTAB_LAST_IMPORT_SSPEC = "Secondary Spec - %s" +L.AMR_SUMMARYTAB_DIFF_REALM = "a different realm: %s" +L.AMR_SUMMARYTAB_DIFF_TALENT = "different talents" +L.AMR_SUMMARYTAB_DIFF_GLYPHS = "different glyphs" +L.AMR_SUMMARYTAB_DIFF_GEAR = "Mr. Robot optimized a different set of gear" +L.AMR_SUMMARYTAB_DIFF_AND = "and" +L.AMR_SUMMARYTAB_DIFF_PLEASE_EQ = ". Please equip the following items before proceeding with the optimizations." +L.AMR_SUMMARYTAB_DIFF_CHECK_CHAR = "WARNING: Please check your character before proceeding:" +L.AMR_SUMMARYTAB_DIFF_OPTIMIZED_FOR = "Mr. Robot optimized for " +--showImportError +L.AMR_SUMMARYTAB_IMPORT_NOT_WORK = 'Error! Your import did not work:|n|n%s' +--ui/RobotStamp.lua +L.AMR_ROBOTSTAMP_TEXT = "ROBOT STAMP OF APPROVAL" +L.AMR_ROBOTSTAMP_GEMS = "Your gems are 100% optimal! You are truly, truly outrageous." \ No newline at end of file
--- a/ui/CombatLogTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/CombatLogTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,13 +1,30 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -- initialize the ExportTab class AskMrRobot.CombatLogTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) +-- these are valid keys in AmrLogData, all others will be deleted +local _logDataKeys = { + ["_logging"] = true, + ["_autoLog"] = true, + ["_lastZone"] = true, + ["_lastDiff"] = true, + ["_current2"] = true, + ["_history2"] = true, + ["_wipes"] = true, + ["_lastWipe"] = true, + ["_currentExtra"] = true, + ["_historyExtra"] = true +}; + +local _undoButton = false + -- helper to create text for this tab local function CreateText(tab, font, relativeTo, xOffset, yOffset, text) local t = tab:CreateFontString(nil, "ARTWORK", font) t:SetPoint("TOPLEFT", relativeTo, "BOTTOMLEFT", xOffset, yOffset) - t:SetPoint("RIGHT", tab, "RIGHT", -25, 0) + t:SetPoint("RIGHT", tab, "RIGHT", -5, 0) t:SetWidth(t:GetWidth()) t:SetJustifyH("LEFT") t:SetText(text) @@ -30,50 +47,45 @@ function AskMrRobot.CombatLogTab:new(parent) - local tab = AskMrRobot.Frame:new(nil, parent) + local tab = AskMrRobot.Frame:new(nil, parent) setmetatable(tab, { __index = AskMrRobot.CombatLogTab }) tab:SetPoint("TOPLEFT") tab:SetPoint("BOTTOMRIGHT") tab:Hide() + -- tab header local text = tab:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) text:SetText("Combat Logging") + + --scrollframe + tab.scrollframe = AskMrRobot.ScrollFrame:new(nil, tab) + tab.scrollframe:SetPoint("TOPLEFT", tab, "TOPLEFT", 0, -30) + tab.scrollframe:SetPoint("BOTTOMRIGHT", tab, "BOTTOMRIGHT", -30, 10) + + local content = tab.scrollframe.content + content:SetHeight(730) - local manulText = CreateText(tab, "GameFontWhite", text, 0, -15, "Manual:") - manulText:SetJustifyV("MIDDLE") - manulText:SetHeight(30) - - local btn = CreateFrame("Button", "AmrCombatLogStart", tab, "UIPanelButtonTemplate") - btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 75, -15) + local btn = CreateFrame("Button", "AmrCombatLogStart", content, "UIPanelButtonTemplate") + btn:SetPoint("TOPLEFT", content, "TOPLEFT", 0, 0) btn:SetText("Start Logging") btn:SetWidth(120) btn:SetHeight(30) tab.btnStart = btn btn:SetScript("OnClick", function() - tab:StartLogging() + tab:ToggleLogging() end) - btn = CreateFrame("Button", "AmrCombatLogEnd", tab, "UIPanelButtonTemplate") - btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 225, -15) - btn:SetText("Stop Logging") - btn:SetWidth(120) - btn:SetHeight(30) - tab.btnEnd = btn - - btn:SetScript("OnClick", function() - tab:StopLogging() - end) - local autoText = CreateText(tab, "GameFontWhite", text, 0, -50, "Automatic:") - autoText:SetJustifyV("MIDDLE") - autoText:SetHeight(28) + text = content:CreateFontString(nil, "ARTWORK", "GameFontWhite") + text:SetPoint("LEFT", btn, "RIGHT", 10, 0) + tab.loggingStatus = text; - local autoChk = newCheckbox(tab, - "Always log Siege of Orgrimmar", - "Auto-Log Siege of Orgrimmar", - "Automatically start logging when you enter SoO and stop when you leave SoO.\n\nNote that you should disable similar features in other addons to avoid conflicts.", + local autoChk = newCheckbox(content, + L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_LABEL, + L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_TOOLTIP_TITLE, + L.AMR_COMBATLOGTAB_CHECKBOX_AUTOLOG_SOO_DESCRIPTION, function(self, value) if value then AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "enabled" @@ -87,33 +99,66 @@ end ) autoChk:SetChecked(AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] == "enabled") - autoChk:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 75, -50) + autoChk:SetPoint("TOPLEFT", btn, "BOTTOMLEFT", 0, -10) autoChk:SetHeight(30) - text = CreateText(tab, "GameFontNormalLarge", text, 0, -100, "Character Data") - btn = CreateFrame("Button", "AmrCombatLogSaveCharData", tab, "UIPanelButtonTemplate") + local text = CreateText(content, "GameFontNormalLarge", autoChk, 0, -20, L.AMR_COMBATLOGTAB_INFIGHT) + + btn = CreateFrame("Button", "AmrCombatLogWipe", autoChk, "UIPanelButtonTemplate") + btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 0, -10) + btn:SetText("Wipe") + btn:SetWidth(70) + btn:SetHeight(30) + btn:SetScript("OnClick", function() + tab:LogWipe() + end) + + tab.btnWipe = btn + + local text2 = CreateText(content, "GameFontWhite", text, 80, -12, L.AMR_COMBATLOGTAB_WIPE_1) + text2 = CreateText(content, "GameFontWhite", text2, 0, -2, L.AMR_COMBATLOGTAB_WIPE_2) + text2 = CreateText(content, "GameFontWhite", text2, 0, -2, L.AMR_COMBATLOGTAB_WIPE_3) + + btn = CreateFrame("Button", "AmrCombatLogUnWipe", content, "UIPanelButtonTemplate") + btn:SetPoint("LEFT", text, "LEFT", 0, 0) + btn:SetPoint("TOP", text2, "BOTTOM", 0, -10) + btn:SetText("Undo") + btn:SetWidth(70) + btn:SetHeight(30) + btn:Hide() -- initially hidden + btn:SetScript("OnClick", function() + tab:LogUnwipe() + end) + tab.btnUnwipe = btn + + text = content:CreateFontString(nil, "ARTWORK", "GameFontWhite") + text:SetPoint("LEFT", btn, "LEFT", 80, 0) + tab.lastWipeLabel = text + + text = CreateText(tab, "GameFontNormalLarge", btn, 0, -20, L.AMR_COMBATLOGTAB_HEADLINE_OVER_BUTTON) + + btn = CreateFrame("Button", "AmrCombatLogSaveCharData", content, "UIPanelButtonTemplate") btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 0, -5) - btn:SetText("Save Character Data") + btn:SetText(L.AMR_COMBATLOGTAB_SAVE_CHARACTER) btn:SetWidth(150) btn:SetHeight(30) - btn:SetScript("OnClick", function() - -- reload the UI will save character data to disk - ReloadUI() - end) + -- reload the UI will save character data to disk + btn:SetScript("OnClick", ReloadUI) - text = CreateText(tab, "GameFontNormalLarge", btn, 0, -30, "INSTRUCTIONS") - text = CreateText(tab, "GameFontWhite", text, 0, -10, "1. Use the Start/Stop buttons or check 'Always log Siege of Orgrimmar'.") - text = CreateText(tab, "GameFontWhite", text, 0, -10, "2. When you are ready to upload, press 'Save Character Data'. *") - text = CreateText(tab, "GameFontWhite", text, 0, -10, "3. Exit World of Warcraft. **") - text = CreateText(tab, "GameFontWhite", text, 0, -10, "4. Launch the Ask Mr. Robot client and follow the instructions. ***") + text = CreateText(content, "GameFontWhite", btn, 0, -15, L.AMR_COMBATLOGTAB_SAVE_CHARACTER_INFO) - text = CreateText(tab, "GameFontNormalSmall", text, 0, -30, "|c00999999* This will reload your UI to ensure that all collected data is saved to disk. This step is not necessary if you log out of the game before uploading.|r") - text = CreateText(tab, "GameFontNormalSmall", text, 0, -10, "|c00999999** Exiting WoW before uploading your combat log is optional, but highly recommended. This prevents your log file from getting ridiculously large and slowing down your uploads.|r") - text = CreateText(tab, "GameFontNormalSmall", text, 0, -10, "|c00999999*** You can download the client program at|r |c003333ffhttp://www.askmrrobot.com/wow/combatlog/upload|r|c00999999.|r") + text = CreateText(content, "GameFontNormalLarge", text, 0, -30, L.AMR_COMBATLOGTAB_INSTRUCTIONS) + text = CreateText(content, "GameFontWhite", text, 0, -10, L.AMR_COMBATLOGTAB_INSTRUCTIONS_1) + text = CreateText(content, "GameFontWhite", text, 0, -10, L.AMR_COMBATLOGTAB_INSTRUCTIONS_2) + text = CreateText(content, "GameFontWhite", text, 0, -10, L.AMR_COMBATLOGTAB_INSTRUCTIONS_3) + text = CreateText(content, "GameFontWhite", text, 0, -10, L.AMR_COMBATLOGTAB_INSTRUCTIONS_4) + + text = CreateText(content, "GameFontNormalSmall", text, 0, -30, L.AMR_COMBATLOGTAB_INSTRUCTIONS_5) + text = CreateText(content, "GameFontNormalSmall", text, 0, -10, L.AMR_COMBATLOGTAB_INSTRUCTIONS_6) + text = CreateText(content, "GameFontNormalSmall", text, 0, -10, L.AMR_COMBATLOGTAB_INSTRUCTIONS_7) - --[[ btn = CreateFrame("Button", "AmrCombatLogTest", tab, "UIPanelButtonTemplate") btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 0, -15) btn:SetText("Test") @@ -121,9 +166,12 @@ btn:SetHeight(30) btn:SetScript("OnClick", function() - AskMrRobot.ExportToAddonChat(time()) + + local t = time() + AskMrRobot.SaveAll() + AskMrRobot.ExportToAddonChat(t) + AskMrRobot.ExportLoggingData(t) end) - ]] -- when we start up, ensure that logging is still enabled if it was enabled when they last used the addon if (tab:IsLogging()) then @@ -149,6 +197,9 @@ function AskMrRobot.CombatLogTab:StartLogging() + local now = time() + local oldDuration = 60 * 60 * 24 * 10 + -- archive the current logging session so that users don't accidentally blow away data before uploading it if AmrLogData._current2 ~= nil then if not AmrLogData._history2 then AmrLogData._history2 = {} end @@ -162,11 +213,9 @@ end -- delete entries that are more than 10 days old - local now = time() - local interval = 60 * 60 * 24 * 10 for name, timeList in AskMrRobot.spairs(AmrLogData._history2) do for timestamp, dataString in AskMrRobot.spairs(timeList) do - if difftime(now, tonumber(timestamp)) > interval then + if difftime(now, tonumber(timestamp)) > oldDuration then timeList[timestamp] = nil end end @@ -181,15 +230,65 @@ end end + -- same idea with extra info (auras, pets, whatever we end up adding to it) + if AmrLogData._currentExtra ~= nil then + if not AmrLogData._historyExtra then AmrLogData._historyExtra = {} end + + -- add new entries + for name, timeList in AskMrRobot.spairs(AmrLogData._currentExtra) do + if not AmrLogData._historyExtra[name] then AmrLogData._historyExtra[name] = {} end + for timestamp, dataString in AskMrRobot.spairs(timeList) do + AmrLogData._historyExtra[name][timestamp] = dataString + end + end + + -- delete entries that are more than 10 days old + for name, timeList in AskMrRobot.spairs(AmrLogData._historyExtra) do + for timestamp, dataString in AskMrRobot.spairs(timeList) do + if difftime(now, tonumber(timestamp)) > oldDuration then + timeList[timestamp] = nil + end + end + + local count = 0 + for timestamp, dataString in pairs(timeList) do + count = count + 1 + end + if count == 0 then + AmrLogData._historyExtra[name] = nil + end + end + end + + + -- delete _wipes entries that are more than 10 days old + if AmrLogData._wipes then + local i = 1 + while i <= #AmrLogData._wipes do + local t = AmrLogData._wipes[i] + if difftime(now, t) > oldDuration then + tremove(AmrLogData._wipes, i) + else + i = i + 1 + end + end + end + + -- delete the _lastWipe if it is more than 10 days old + if AmrLogData._lastWipe and difftime(now, AmrLogData._lastWipe) > oldDuration then + AmrLogData_lastWipe = nil + end + -- clean up old-style logging data from previous versions of the addon for k, v in AskMrRobot.spairs(AmrLogData) do - if k ~= "_logging" and k ~= "_autoLog" and k ~= "_lastZone" and k ~= "_lastDiff" and k ~= "_current2" and k ~= "_history2" then + if not _logDataKeys[k] then AmrLogData[k] = nil end end -- start a new logging session AmrLogData._current2 = {} + AmrLogData._currentExtra = {} AmrLogData._logging = true -- always enable advanced combat logging via our addon, gathers more detailed data for better analysis @@ -197,8 +296,10 @@ LoggingCombat(true) self:Update() + + AskMrRobot.AmrUpdateMinimap() - print("You are now logging combat, and Mr. Robot is logging character data for your raid.") + print(L.AMR_COMBATLOGTAB_IS_LOGGING) end function AskMrRobot.CombatLogTab:StopLogging() @@ -206,7 +307,17 @@ AmrLogData._logging = false self:Update() - print("Combat logging has been stopped.") + AskMrRobot.AmrUpdateMinimap() + + print(L.AMR_COMBATLOGTAB_STOPPED_LOGGING) +end + +function AskMrRobot.CombatLogTab:ToggleLogging() + if self:IsLogging() then + self:StopLogging() + else + self:StartLogging() + end end -- update the panel and state @@ -214,12 +325,21 @@ local isLogging = self:IsLogging() if isLogging then - self.btnStart:Disable() - self.btnEnd:Enable() + self.btnStart:SetText(L.AMR_COMBATLOGTAB_STOP_LOGGING) + self.loggingStatus:SetText(L.AMR_COMBATLOGTAB_CURRENTLY_LOGGING) else - self.btnStart:Enable() - self.btnEnd:Disable() + self.btnStart:SetText(L.AMR_COMBATLOGTAB_START_LOGGING) + self.loggingStatus:SetText("") end + + if AmrLogData._lastWipe then + self.lastWipeLabel:SetText(L.AMR_COMBATLOGTAB_LASTWIPE:format(date('%B %d', AmrLogData._lastWipe), date('%I:%M %p', AmrLogData._lastWipe))) + self.btnUnwipe:Show() + else + self.lastWipeLabel:SetText("") + self.btnUnwipe:Hide() + end + end -- called to update logging state when auto-logging is enabled @@ -258,6 +378,63 @@ end +local function RaidChatType() + if UnitIsGroupAssistant("player") or UnitIsGroupLeader("player") then + return "RAID_WARNING" + else + return "RAID" + end +end + +-- used to store wipes to AmrLogData so that we trim data after the wipe +function AskMrRobot.CombatLogTab:LogWipe() + local t = time() + tinsert(AmrLogData._wipes, t) + AmrLogData._lastWipe = t + + if GetNumGroupMembers() > 0 then + SendChatMessage(L.AMR_COMBATLOGTAB_WIPE_CHAT, RaidChatType()) + end + print(string.format(L.AMR_COMBATLOGTAB_WIPE_MSG, date('%I:%M %p', t))) + + self:Update() + --AskMrRobot.wait(301, AskMrRobot.CombatLogTab.Update, self) +end + +-- used to undo the wipe command +function AskMrRobot.CombatLogTab:LogUnwipe() + local t = AmrLogData._lastWipe + if not t then + print(L.AMR_COMBATLOGTAB_NOWIPES) + else + tremove(AmrLogData._wipes) + AmrLogData._lastWipe = nil + print(string.format(L.AMR_COMBATLOGTAB_UNWIPE_MSG, date('%I:%M %p', t))) + end + self:Update() +end + +-- initialize the AmrLogData variable +function AskMrRobot.CombatLogTab.InitializeVariable() + if not AmrLogData then AmrLogData = {} end + if not AmrLogData._autoLog then AmrLogData._autoLog = {} end + if not AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] then + AmrLogData._autoLog[AskMrRobot.instanceIds.SiegeOfOrgrimmar] = "disabled" + end + AmrLogData._wipes = AmrLogData._wipes or {} +end + +function AskMrRobot.CombatLogTab.SaveExtras(data, timestamp) + + for name,val in pairs(data) do + -- record aura stuff, we never check for duplicates, need to know it at each point in time + if AmrLogData._currentExtra[name] == nil then + AmrLogData._currentExtra[name] = {} + end + AmrLogData._currentExtra[name][timestamp] = val + end +end + -- read a message sent to the addon channel with a player's info at the time an encounter started function AskMrRobot.CombatLogTab:ReadAddonMessage(message) @@ -274,7 +451,7 @@ if (data == "done") then -- we have finished receiving this message; now process it to reduce the amount of duplicate data local setup = AmrLogData._current2[name][timestamp] - + if (AmrLogData._previousSetup == nil) then AmrLogData._previousSetup = {} end @@ -288,6 +465,7 @@ -- record the last-seen setup AmrLogData._previousSetup[name] = setup end + else -- concatenate messages with the same timestamp+name if (AmrLogData._current2[name] == nil) then
--- a/ui/Components.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/Components.lua Thu Jul 10 12:24:59 2014 -0700 @@ -8,7 +8,7 @@ -- The following lines are equivalent to the SimpleClass example: -- Create the table and metatable representing the class. - local new_class = {} + local new_class = { } -- Note that this function uses class_mt as an upvalue, so every instance -- of the class will share the same metatable. @@ -130,33 +130,4 @@ AskMrRobot.sortedSlots[slotNum] = i i = i + 1 end -end - - --- initialize the Frame class (inherit from a dummy frame) -AskMrRobot.FontString = AskMrRobot.inheritsFrom(AskMrRobot.Frame:new():CreateFontString(nil, "ARTWORK", "GameFontNormal")) - --- Frame contructor -function AskMrRobot.FontString:new(parentFrame, name, layer, style, fontSize) - - local o = parentFrame:CreateFontString(name, layer, style) -- create a new frame (if one isn't supplied) - - -- use the fontstring class - setmetatable(o, { __index = AskMrRobot.FontString }) - - if fontSize then - o:SetFontSize(fontSize) - end - - return o -end - -function AskMrRobot.FontString:SetFontSize(fontSize) - local file, _, flags = self:GetFont() - self:SetFont(file, fontSize, flags) -end - -function AskMrRobot.SetFontSize(fontString, fontSize) - local file, _, flags = fontString:GetFont() - fontString:SetFont(file, fontSize, flags) -end +end \ No newline at end of file
--- a/ui/EnchantTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/EnchantTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,5 +1,5 @@ local _, AskMrRobot = ... - +local L = AskMrRobot.L; -- initialize the EnchantTab class AskMrRobot.EnchantTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) @@ -14,22 +14,22 @@ local text = tab:CreateFontString("AmrEnchantsText1", "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetText("Enchants") + text:SetText(L.AMR_ENCHANTTAB_ENCHANTS) tab.stamp = AskMrRobot.RobotStamp:new(nil, tab) tab.stamp:Hide() - tab.stamp.smallText:SetText("Your enchants are 100% optimal!") + tab.stamp.smallText:SetText(L.AMR_ENCHANTTAB_100_OPTIMAL) tab.stamp:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 2, -15) tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -20, 0) tab.slotHeader = tab:CreateFontString("AmrBadEnchantSlotHeader", "ARTWORK", "GameFontNormal") tab.slotHeader:SetPoint("TOPLEFT", "AmrEnchantsText1", "BOTTOMLEFT", 0, -20) - tab.slotHeader:SetText("Slot") + tab.slotHeader:SetText(L.AMR_ENCHANTTAB_SLOT) tab.slotHeader:SetWidth(90) tab.slotHeader:SetJustifyH("LEFT") tab.currentHeader = tab:CreateFontString("AmrBadEnchantCurrentHeader", "ARTWORK", "GameFontNormal") - tab.currentHeader:SetText("Current") + tab.currentHeader:SetText(L.AMR_ENCHANTTAB_CURRENT) tab.currentHeader:SetPoint("TOPLEFT", "AmrBadEnchantSlotHeader", "TOPLEFT", 100, 0) tab.currentHeader:SetWidth(120) tab.currentHeader:SetJustifyH("LEFT") @@ -37,7 +37,7 @@ tab.optimizedHeader = tab:CreateFontString("AmrBadEnchantOptimizedHeader", "ARTWORK", "GameFontNormal") tab.optimizedHeader:SetPoint("TOPLEFT", "AmrBadEnchantCurrentHeader", "TOPLEFT", 140, 0) tab.optimizedHeader:SetPoint("RIGHT", -30, 0) - tab.optimizedHeader:SetText("Optimized") + tab.optimizedHeader:SetText(L.AMR_ENCHANTTAB_OPTIMIZED) tab.optimizedHeader:SetJustifyH("LEFT") tab.badEnchantSlots = {} @@ -49,7 +49,7 @@ itemText:SetPoint("TOPLEFT", "AmrBadEnchantSlotHeader", "TOPLEFT", 0, -26 * i) itemText:SetPoint("BOTTOMRIGHT", "AmrBadEnchantSlotHeader", "BOTTOMRIGHT", 0, -26 * i) itemText:SetJustifyH("LEFT") - itemText:SetText("TestSlot") + itemText:SetText(L.AMR_ENCHANTTAB_TESTSLOT) tinsert(tab.badEnchantSlots, itemText) itemText = AskMrRobot.EnchantLinkText:new(nil, tab)
--- a/ui/ExportTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/ExportTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -- initialize the ExportTab class AskMrRobot.ExportTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) @@ -33,7 +34,7 @@ local text = tab:CreateFontString(nil, "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetText("Export Gear for Best in Bags") + text:SetText(L.AMR_EXPORTTAB_EXPORT_BB) local chooseText = CreateText(nil, tab, "GameFontWhite", text, 0, -15, "Choose a method:") chooseText:SetJustifyV("MIDDLE") @@ -41,7 +42,7 @@ local btn = CreateFrame("Button", "AmrExportManual", tab, "UIPanelButtonTemplate") btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 125, -15) - btn:SetText("Copy/Paste") + btn:SetText(L.AMR_EXPORTTAB_COPY_PASTE) btn:SetWidth(120) btn:SetHeight(30) tab.btnManual = btn @@ -53,7 +54,7 @@ btn = CreateFrame("Button", "AmrExportAuto", tab, "UIPanelButtonTemplate") btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 275, -15) - btn:SetText("AMR Client") + btn:SetText(L.AMR_EXPORTTAB_AMR_CLIENT) btn:SetWidth(120) btn:SetHeight(30) tab.btnAuto = btn @@ -64,9 +65,9 @@ end) -- copy/paste - text = CreateText(tab.manualElements, tab, "GameFontNormalLarge", chooseText, 0, -20, "COPY/PASTE EXPORT") - local text2 = CreateText(tab.manualElements, tab, "GameFontWhite", text, 0, -15, "1. Open your bank") - text = CreateText(tab.manualElements, tab, "GameFontWhite", text2, 0, -15, "2. Copy the text below by pressing Ctrl+C (or Cmd+C on a Mac)") + text = CreateText(tab.manualElements, tab, "GameFontNormalLarge", chooseText, 0, -20, L.AMR_EXPORTTAB_COPY_PASTE_EXPORT) + local text2 = CreateText(tab.manualElements, tab, "GameFontWhite", text, 0, -15, L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_1) + text = CreateText(tab.manualElements, tab, "GameFontWhite", text2, 0, -15, L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_2) local txtExportString = CreateFrame("ScrollFrame", "AmrScrollFrame", tab, "InputScrollFrameTemplate") txtExportString:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 12, -10) @@ -83,15 +84,15 @@ AskMrRobot_ReforgeFrame:Hide() end) - text = CreateText(tab.manualElements, tab, "GameFontWhite", txtExportString, -12, -20, "3. Go to AskMrRobot.com and paste into the IMPORT window") - text2 = CreateText(tab.manualElements, tab, "GameFontWhite", text, 10, -5, "(located to the right of your character name near the top of the web page, see screenshot)") + text = CreateText(tab.manualElements, tab, "GameFontWhite", txtExportString, -12, -20, L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_3) + text2 = CreateText(tab.manualElements, tab, "GameFontWhite", text, 10, -5, L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_4) local image = tab:CreateTexture(nil, "BACKGROUND") image:SetPoint("TOPLEFT", text2, "BOTTOMLEFT", 2, -10) image:SetTexture("Interface\\AddOns\\AskMrRobot\\Media\\BiBScreen") table.insert(tab.manualElements, image) - text = CreateText(tab.manualElements, tab, "GameFontWhite", text2, 0, -120, "NOTE: If you change something while this window is open, press the Update button below to generate a new export string.") + text = CreateText(tab.manualElements, tab, "GameFontWhite", text2, 0, -120, L.AMR_EXPORTTAB_COPY_PASTE_EXPORT_NOTE) btn = CreateFrame("Button", "AmrUpdateExportString", tab, "UIPanelButtonTemplate") btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 0, -5) @@ -105,9 +106,9 @@ end) -- amr client - text = CreateText(tab.autoElements, tab, "GameFontNormalLarge", chooseText, 0, -20, "AMR CLIENT EXPORT") - text2 = CreateText(tab.autoElements, tab, "GameFontWhite", text, 0, -15, "1. Open your bank") - text = CreateText(tab.autoElements, tab, "GameFontWhite", text2, 0, -15, "2. Press the button below to update your AskMrRobot.lua file") + text = CreateText(tab.autoElements, tab, "GameFontNormalLarge", chooseText, 0, -20, L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT) + text2 = CreateText(tab.autoElements, tab, "GameFontWhite", text, 0, -15, L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_1) + text = CreateText(tab.autoElements, tab, "GameFontWhite", text2, 0, -15, L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_2) btn = CreateFrame("Button", "AmrExportFile", tab, "UIPanelButtonTemplate") btn:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 12, -10) @@ -121,8 +122,8 @@ ReloadUI() end) - text = CreateText(tab.autoElements, tab, "GameFontWhite", btn, -12, -20, "3. Go to AskMrRobot.com and press REFRESH") - text2 = CreateText(tab.autoElements, tab, "GameFontWhite", text, 10, -5, "(located to the right of your character name near the top of the web page, see screenshot:)") + text = CreateText(tab.autoElements, tab, "GameFontWhite", btn, -12, -20, L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_3) + text2 = CreateText(tab.autoElements, tab, "GameFontWhite", text, 10, -5, L.AMR_EXPORTTAB_AMR_CLIENT_EXPORT_4) image = tab:CreateTexture(nil, "BACKGROUND") image:SetPoint("TOPLEFT", text2, "BOTTOMLEFT", 2, -10)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/FontString.lua Thu Jul 10 12:24:59 2014 -0700 @@ -0,0 +1,29 @@ +local _, AskMrRobot = ... + +-- initialize the Frame class (inherit from a dummy frame) +AskMrRobot.FontString = AskMrRobot.inheritsFrom(AskMrRobot.Frame:new():CreateFontString(nil, "ARTWORK", "GameFontNormal")) + +-- Frame contructor +function AskMrRobot.FontString:new(parentFrame, name, layer, style, fontSize) + + local o = parentFrame:CreateFontString(name, layer, style) -- create a new frame (if one isn't supplied) + + -- use the fontstring class + setmetatable(o, { __index = AskMrRobot.FontString }) + + if fontSize then + o:SetFontSize(fontSize) + end + + return o +end + +function AskMrRobot.FontString:SetFontSize(fontSize) + local file, _, flags = self:GetFont() + self:SetFont(file, fontSize, flags) +end + +function AskMrRobot.SetFontSize(fontString, fontSize) + local file, _, flags = fontString:GetFont() + fontString:SetFont(file, fontSize, flags) +end \ No newline at end of file
--- a/ui/GemTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/GemTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,8 +1,9 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; StaticPopupDialogs["AUTOGEM_FINISHED"] = { - text = "Mr. Robot finished auto-gemming. \rIf some items aren't gemmed, you may need to acquire more gems. \rIf your belt isn't gemmed, you may still need to buy a belt buckle.", - button1 = "Ok", + text = L.AMR_GEMTAB_FINISHED, + button1 = L.AMR_GEMTAB_BUTTON_OK, timeout = 0, whileDead = true, hideOnEscape = true, @@ -10,8 +11,8 @@ } StaticPopupDialogs["AUTOGEM_ONCE"] = { - text = "Autogemming already in progress.", - button1 = "Ok", + text = L.AMR_GEMTAB_AUTOGEMMING_IN_PROGRESS, + button1 = L.AMR_GEMTAB_BUTTON_OK, timeout = 0, whileDead = true, hideOnEscape = true, @@ -35,16 +36,16 @@ local text = tab:CreateFontString("AmrGemsText1", "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetText("Gems") + text:SetText(L.AMR_GEMTAB_GEMS) tab.stamp = AskMrRobot.RobotStamp:new(nil, tab) tab.stamp:Hide() - tab.stamp.smallText:SetText("Your gems are 100% optimal! You are truly, truly outrageous.") + tab.stamp.smallText:SetText(L.AMR_GEMTAB_OPTIMAL) tab.stamp:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 2, -15) tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -20, 0) text = tab:CreateFontString("AmrGemsText2", "ARTWORK", "GameFontWhite") - text:SetText("You have X gems to optimize") + text:SetText(L.AMR_GEMTAB_X_OPTIMIZE) text:SetPoint("TOPLEFT", "AmrGemsText1", "BOTTOMLEFT", 0, -20) text:SetWidth(200) text:SetJustifyH("LEFT") @@ -54,7 +55,7 @@ tab.button = CreateFrame("Button", "AmrAutoGemButton", tab, "UIPanelButtonTemplate") tab.button:SetPoint("TOP", "AmrGemsText1", "BOTTOM", 0, -16) tab.button:SetPoint("RIGHT", -40, 0) - tab.button:SetText("Auto Gem! (BETA)") + tab.button:SetText(L.AMR_GEMTAB_AUTOGEM_BUTTON) tab.button:SetWidth(150) tab.button:SetHeight(20) tab.button:SetScript("OnClick", function() tab:startAutoGem() end) @@ -67,27 +68,27 @@ tab.usePerfectButton:SetPoint("TOPLEFT", "AmrAutoGemButton", "BOTTOMLEFT", 0, -4) tab.usePerfectButton:SetScript("OnClick", function () tab.preferPerfects = tab.usePerfectButton:GetChecked() end) local text3 = getglobal(tab.usePerfectButton:GetName() .. 'Text') - text3:SetText("Prefer Perfect") + text3:SetText(L.AMR_GEMTAB_PREFER_PERFECT) text3:SetWidth(150) text3:SetPoint("TOPLEFT", tab.usePerfectButton, "TOPRIGHT", 2, -4) tab.usePerfectButton:Hide() tab.gemSlotHeader = tab:CreateFontString("AmrBadGemSlot0", "ARTWORK", "GameFontNormal") tab.gemSlotHeader:SetPoint("TOPLEFT", "AmrGemsText2", "BOTTOMLEFT", 0, -20) - tab.gemSlotHeader:SetText("Slot") + tab.gemSlotHeader:SetText(L.AMR_GEMTAB_SLOT) tab.gemSlotHeader:SetWidth(90) tab.gemSlotHeader:SetJustifyH("LEFT") tab.gemSlotHeader:Hide() tab.gemCurrentHeader = tab:CreateFontString("AmrBadGemCurrent0_1", "ARTWORK", "GameFontNormal") tab.gemCurrentHeader:SetPoint("TOPLEFT", "AmrBadGemSlot0", "TOPLEFT", 88, 0) tab.gemCurrentHeader:SetWidth(110) - tab.gemCurrentHeader:SetText("Current") + tab.gemCurrentHeader:SetText(L.AMR_GEMTAB_CURRENT) tab.gemCurrentHeader:SetJustifyH("LEFT") tab.gemCurrentHeader:Hide() tab.gemOptimizedHeader = tab:CreateFontString("AmrBadGemOptimized0_1", "ARTWORK", "GameFontNormal") tab.gemOptimizedHeader:SetPoint("TOPLEFT", "AmrBadGemCurrent0_1", "TOPLEFT", 70, 0) tab.gemOptimizedHeader:SetPoint("RIGHT", -30, 0) - tab.gemOptimizedHeader:SetText("Optimized") + tab.gemOptimizedHeader:SetText(L.AMR_GEMTAB_OPTIMIZED) tab.gemOptimizedHeader:SetJustifyH("LEFT") tab.gemOptimizedHeader:Hide() @@ -138,7 +139,7 @@ end end - self.gemsTextToOptimize:SetFormattedText("You have %d \1244gem:gems; to optimize", badGemTotal) + self.gemsTextToOptimize:SetFormattedText(L.AMR_GEMTAB_TO_OPTIMIZE, badGemTotal) --hide/show the headers, depending on if we have any bad gems if self.count == 0 then
--- a/ui/HelpTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/HelpTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -- initialize the HelpTab class AskMrRobot.HelpTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) @@ -13,23 +14,23 @@ local text = tab:CreateFontString("AmrHelpText1", "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetText("Help") + text:SetText(L.AMR_HELPTAB_TITLE) local text2 = tab:CreateFontString(nil, "ARTWORK", "GameFontWhite") text2:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 0, -20) text2:SetPoint("RIGHT", tab, "RIGHT", -25, -20) text2:SetWidth(text2:GetWidth()) - text2:SetText("Visit |c003333ffhttp://blog.askmrrobot.com/addon/|r for a full tutorial and to ask questions.\r\r" .. - "|c00999999Q:|r Do I have to get a new text-string every time I need to optimize?\r" .. - '|c0066dd66A:|r Yes. Go to the website and click the green "Update from Armory" button to the left of your character to make sure you have the most up-to-date gear. Optimize your gear and then click the "Export to Addon" button to get your new text-string.\r\r' .. - "|c00999999Q:|r The belt buckle didn't show up in my list.\r" .. - "|c0066dd66A:|r Correct, it's actually quite hard to detect it's status in-game, believe it or not. But we're working on a clever way to detect it!\r\r".. - "|c00999999Q:|r My cogwheels/tinkers didn't show up.\r".. - "|c0066dd66A:|r Correct, we're working on adding those into the list as well... the problem is Mr. Robot has been using them to build other robots...\r\r".. - "|c00999999Q:|r Can I send my shopping list to an alt?\r".. - '|c0066dd66A:|r Yes, go to the shopping list tab and select the "mail" option in the drop down. You can mail the list to your alt.\r\r'.. - "|c00999999Q:|r I am in the middle of a raid and just won a piece of loot. Can I optimize really quick\r".. - "|c0066dd66A:|r Yes! You'll want to read the tutorial on that here: |c003333ffhttp://blog.askmrrobot.com/addon#raid|r") + text2:SetText(L.AMR_HELPTAB_LINK .. + L.AMR_HELPTAB_Q1 .. + L.AMR_HELPTAB_A1 .. + L.AMR_HELPTAB_Q2 .. + L.AMR_HELPTAB_A2 .. + L.AMR_HELPTAB_Q3 .. + L.AMR_HELPTAB_A3 .. + L.AMR_HELPTAB_Q4 .. + L.AMR_HELPTAB_A4 .. + L.AMR_HELPTAB_Q5 .. + L.AMR_HELPTAB_A5) --text2:SetHeight(100) text2:SetJustifyH("LEFT")
--- a/ui/ImportTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/ImportTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -- initialize the ImportTab class AskMrRobot.ImportTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) @@ -14,21 +15,21 @@ -- import button tab.button = CreateFrame("Button", "AmrImportButton", tab, "UIPanelButtonTemplate") tab.button:SetPoint("BOTTOM") - tab.button:SetText("Import!") + tab.button:SetText(L.AMR_IMPORTTAB_BUTTON) tab.button:SetWidth(100) tab.button:SetHeight(20) tab.button:SetPoint("BOTTOM", 0, 15) local text = tab:CreateFontString("AmrImportText1", "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetFormattedText("Import Mr. Robot's optimizations") + text:SetFormattedText(L.AMR_IMPORTTAB_TITLE) text = tab:CreateFontString("AmrImportText2", "ARTWORK", "GameFontWhite") text:SetPoint("TOPLEFT", "AmrImportText1", "BOTTOMLEFT", 0, -20) text:SetPoint("RIGHT", 0, -20) text:SetWidth(text:GetWidth()) text:SetJustifyH("LEFT") - text:SetText("1. Go to our website, optimize, then click the 'export to addon' button found just above the stats section.") + text:SetText(L.AMR_IMPORTTAB_INSTRUCTIONS_1) local image = tab:CreateTexture(nil, "BACKGROUND") image:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 16, -10) @@ -40,7 +41,7 @@ text:SetPoint("RIGHT", -15, 40) text:SetWidth(text:GetWidth()) text:SetJustifyH("LEFT") - text:SetText("2. A window will popup, copy the text from that window.\r\r3. Return here and paste the text into the window below. To paste it, hold ctrl + v, or on a mac apple + v.\r\r4. Click the 'Import' button below") + text:SetText(L.AMR_IMPORTTAB_INSTRUCTIONS_2) local scrollFrame = CreateFrame("ScrollFrame", "AmrImportScrollFrame", tab, "InputScrollFrameTemplate") scrollFrame:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 5, -10) @@ -50,7 +51,7 @@ scrollFrame.EditBox:SetWidth(scrollFrame:GetWidth()) scrollFrame.EditBox:SetMaxLetters(1100) scrollFrame.CharCount:Hide() - scrollFrame.EditBox.PromptText:SetText("Paste text from AskMrRobot.com here.") + scrollFrame.EditBox.PromptText:SetText(L.AMR_IMPORTTAB_INSTRUCTIONS_3) scrollFrame.EditBox:SetFocus() scrollFrame.EditBox:HighlightText() tab.scrollFrame = scrollFrame
--- a/ui/ReforgesTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/ReforgesTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,12 +1,13 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -------------------------------------------------------------------- -- Local Reforge Utility Code -------------------------------------------------------------------- StaticPopupDialogs["REFORGE_TAB_PLEASE_OPEN"] = { - text = "You need to open the reforge window for this to work", - button1 = "Ok", + text = L.AMR_REFORGESTAB_OPEN_WINDOW, + button1 = L.AMR_REFORGESTAB_BUTTON_OK, timeout = 0, whileDead = true, hideOnEscape = true, @@ -90,11 +91,11 @@ local text = tab:CreateFontString("AmrReforgesHeader", "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetText("Reforges") + text:SetText(L.AMR_REFORGESTAB_TITLE) tab.stamp = AskMrRobot.RobotStamp:new(nil, tab) tab.stamp:Hide() - tab.stamp.smallText:SetText("Your reforges are 100% optimal!") + tab.stamp.smallText:SetText(L.AMR_REFORGESTAB_OPTIMAL) tab.stamp:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 2, -15) tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -20, 0) @@ -103,11 +104,11 @@ tab.reforgeDetails:SetPoint("RIGHT", -30, 0) tab.reforgeDetails:SetWordWrap(true) tab.reforgeDetails:SetJustifyH("LEFT") - tab.reforgeDetails:SetText('Open a reforge window, then click the "Reforge!" button to do it automatically.') + tab.reforgeDetails:SetText(L.AMR_REFORGESTAB_INSTRUCTION) tab.reforgeDetails:SetHeight(50) tab.reforgeButton = CreateFrame("Button", "AmrReforgeButton", tab, "UIPanelButtonTemplate") - tab.reforgeButton:SetText("Reforge!") + tab.reforgeButton:SetText(L.AMR_REFORGESTAB_BUTTON) tab.reforgeButton:SetPoint("TOPLEFT", 0, -80) tab.reforgeButton:SetWidth(140) tab.reforgeButton:SetHeight(20) @@ -122,11 +123,11 @@ tab.reforgeCost:SetText('') tab.slotHeader = tab:CreateFontString(nil, "ARTWORK", "GameFontNormal") - tab.slotHeader:SetText("Slot") + tab.slotHeader:SetText(L.AMR_REFORGESTAB_SLOT) tab.slotHeader:SetPoint("TOPLEFT", tab.reforgeButton, "BOTTOMLEFT", 0, -30) tab.reforgeHeader = tab:CreateFontString(nil, "ARTWORK", "GameFontNormal") - tab.reforgeHeader:SetText("Optimal Reforge") + tab.reforgeHeader:SetText(L.AMR_REFORGESTAB_OPTIMAL_REFORGE) tab.reforgeHeader:SetPoint("TOPLEFT", tab.slotHeader, "TOPLEFT", 100, 0) -- pre-allocate a visual element for all possible slots; showBadReforges will set text and show the number that are needed, and hide the rest @@ -177,7 +178,7 @@ if fromId == 0 then return text end - return 'Restore, then ' .. text + return L.AMR_REFORGESTAB_RESTORE_THEN .. text end -- draw all of the reforges that still need to be performed @@ -206,7 +207,7 @@ i = i + 1 end - self.reforgeCost:SetText("Total reforge cost: ~" .. math.ceil(cost / 10000) .. " Gold") + self.reforgeCost:SetText(L.AMR_REFORGESTAB_TOTAL_COST:format(math.ceil(cost / 10000))) -- hide / show the headers if i == 1 then
--- a/ui/RobotStamp.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/RobotStamp.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -- initialize the RobotStamp class (inherit from Frame) AskMrRobot.RobotStamp = AskMrRobot.inheritsFrom(AskMrRobot.Frame) @@ -19,12 +20,12 @@ o.bigText:SetTextColor(7/255, 166/255, 11/255) local file, _, flags = o.bigText:GetFont() o.bigText:SetFont(file, 24, flags) - o.bigText:SetText("ROBOT STAMP OF APPROVAL") + o.bigText:SetText(L.AMR_ROBOTSTAMP_TEXT) o.bigText:SetPoint("TOPLEFT", o, "TOPLEFT", 15, -20) o.bigText:SetPoint("RIGHT", o, "RIGHT", -15, 0) o.smallText = o:CreateFontString(nil, "ARTWORK", "GameFontWhite") - o.smallText:SetText("Your gems are 100% optimal! You are truly, truly outrageous.") + o.smallText:SetText(AMR_ROBOTSTAMP_GEMS) o.smallText:SetPoint("TOPLEFT", o.bigText, "BOTTOMLEFT", 0, -7) o.smallText:SetPoint("RIGHT", o, "RIGHT", -15, 0) o.smallText:SetWidth(o.smallText:GetWidth())
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/ScrollFrame.lua Thu Jul 10 12:24:59 2014 -0700 @@ -0,0 +1,66 @@ +local _, AskMrRobot = ... + +-- initialize the ScrollFrame class (inherit from a dummy frame) +AskMrRobot.ScrollFrame = AskMrRobot.inheritsFrom(CreateFrame("ScrollFrame")) + +function AskMrRobot.ScrollFrame:OnMouseWheel(value) + local currentValue = self.scrollbar:GetValue() + if value < 0 then + currentValue = currentValue + 15 + else + currentValue = currentValue - 15 + end + self.scrollbar:SetValue(currentValue) +end + +function AskMrRobot.ScrollFrame:RecalcScrollbar() + self.scrollbar:SetMinMaxValues(0, self.content:GetHeight() * 100 / self:GetHeight()) +end + +function AskMrRobot.ScrollFrame:OnSizeChanged(width, height) + self.content:SetWidth(width) + self:RecalcScrollbar() +end + +-- ScrollFrame contructor +function AskMrRobot.ScrollFrame:new(name, parentFrame) + -- create a new frame (if one isn't supplied) + local scrollframe = CreateFrame("ScrollFrame", name, parentFrame) + + -- use the ScrollFrame class + setmetatable(scrollframe, { __index = AskMrRobot.ScrollFrame }) + + scrollframe:EnableMouseWheel(true) + scrollframe:SetScript("OnMouseWheel", AskMrRobot.ScrollFrame.OnMouseWheel) + scrollframe:SetScript("OnSizeChanged", AskMrRobot.ScrollFrame.OnSizeChanged) + + local scrollbar = CreateFrame("Slider", nil, scrollframe, "UIPanelScrollBarTemplate" ) + scrollbar:SetPoint("TOPLEFT", scrollframe, "TOPRIGHT", 4, -16) + scrollbar:SetPoint("BOTTOMLEFT", scrollframe, "BOTTOMRIGHT", 4, 16) + scrollbar:SetMinMaxValues(0, 100) + scrollbar:SetValueStep(10) + scrollbar.scrollStep = 10 + scrollbar:SetValue(0) + scrollbar:SetWidth(16) + scrollbar:SetScript("OnValueChanged", + function (self, value) + self:GetParent():SetVerticalScroll(value) + end) + scrollbar:Enable() + scrollbar:SetOrientation("VERTICAL"); + scrollbar:Show() + scrollframe.scrollbar = scrollbar + + --content frame + local content = AskMrRobot.Frame:new(nil, scrollframe) + scrollframe.content = content + + scrollframe:SetScrollChild(content) + + content:SetScript('OnSizeChanged', function(a, width, height) + scrollframe:RecalcScrollbar() + end) + + -- return the instance of the ScrollFrame + return scrollframe +end \ No newline at end of file
--- a/ui/ShoppingListTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/ShoppingListTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,11 +1,12 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; -- initialize the ShoppingListTab class AskMrRobot.ShoppingListTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) StaticPopupDialogs["SHOPPING_TAB_PLEASE_OPEN"] = { - text = "You need to open the mail window for this to work", - button1 = "Ok", + text = L.AMR_SHOPPINGLISTTAB_OPEN_MAIL, + button1 = L.AMR_SHOPPINGLISTTAB_BUTTON_OK, timeout = 0, whileDead = true, hideOnEscape = true, @@ -32,7 +33,7 @@ tab.shoppingListHeader = AskMrRobot.FontString:new(tab, nil, "ARTWORK", "GameFontNormalLarge") tab.shoppingListHeader:SetPoint("TOPLEFT", 0, -5) - tab.shoppingListHeader:SetText("Shopping List") + tab.shoppingListHeader:SetText(L.AMR_SHOPPINGLISTTAB_TITLE) tab.shoppingPanel = AskMrRobot.Frame:new(nil, tab) tab.shoppingPanel:SetPoint("TOPLEFT", tab.shoppingListHeader, "BOTTOMLEFT", 0, -10) @@ -40,7 +41,7 @@ tab.sendButton = CreateFrame("Button", "AmrSendButton", tab.shoppingPanel, "UIPanelButtonTemplate") - tab.sendButton:SetText("send it!") + tab.sendButton:SetText(L.AMR_SHOPPINGLISTTAB_BUTTON_SEND) tab.sendButton:SetPoint("BOTTOMLEFT", 0, 0) tab.sendButton:SetHeight(25) tab.sendButton:SetNormalFontObject("GameFontNormalLarge") @@ -56,7 +57,7 @@ tab.enchantMaterialsCheckbox:SetPoint("TOPLEFT", tab.sendButton, "TOPLEFT", 0, 25) local text3 = getglobal(tab.enchantMaterialsCheckbox:GetName() .. 'Text') text3:SetFontObject("GameFontHighlightLarge") - text3:SetText("Enchant Materials") + text3:SetText(L.AMR_SHOPPINGLISTTAB_ENCHANT_MATERIALS) text3:SetWidth(150) text3:SetPoint("TOPLEFT", tab.enchantMaterialsCheckbox, "TOPRIGHT", 2, -4) @@ -67,7 +68,7 @@ tab.enchantsCheckbox:SetPoint("TOPLEFT", tab.sendButton, "TOPLEFT", 0, 50) local text2 = getglobal(tab.enchantsCheckbox:GetName() .. 'Text') text2:SetFontObject("GameFontHighlightLarge") - text2:SetText("Enchants") + text2:SetText(L.AMR_SHOPPINGLISTTAB_ENCHANTS) text2:SetWidth(150) text2:SetPoint("TOPLEFT", tab.enchantsCheckbox, "TOPRIGHT", 2, -4) @@ -79,30 +80,30 @@ tab.gemsCheckbox:SetScript("OnClick", function () AmrSendSettings.SendGems = tab.gemsCheckbox:GetChecked() end) local text = getglobal(tab.gemsCheckbox:GetName() .. 'Text') text:SetFontObject("GameFontHighlightLarge") - text:SetText("Gems") + text:SetText(L.AMR_SHOPPINGLISTTAB_GEMS) text:SetWidth(150) text:SetPoint("TOPLEFT", tab.gemsCheckbox, "TOPRIGHT", 2, -4) tab.sendMessage4 = AskMrRobot.FontString:new(tab.shoppingPanel, nil, "ARTWORK", "GameFontHighlightLarge") - tab.sendMessage4:SetText("Include:") + tab.sendMessage4:SetText(L.AMR_SHOPPINGLISTTAB_INCLUDE) tab.sendMessage4:SetPoint("TOPLEFT", tab.gemsCheckbox, "TOPLEFT", 0, 20) tab.sendMessage3 = AskMrRobot.FontString:new(tab.shoppingPanel, nil, "ARTWORK", "GameFontHighlightLarge") - tab.sendMessage3:SetText("Send list to") + tab.sendMessage3:SetText(L.AMR_SHOPPINGLISTTAB_SEND_LIST_TO) tab.sendMessage3:SetPoint("TOPLEFT", tab.sendMessage4, "TOPLEFT", 0, 25) tab.sendMessage2 = AskMrRobot.FontString:new(tab.shoppingPanel, nil, "ARTWORK", "GameFontNormal") tab.sendMessage2:SetTextColor(.5,.5,.5) - tab.sendMessage2:SetText("Whisper to a friend or send to a channel, like /raid or /guild.") + tab.sendMessage2:SetText(L.AMR_SHOPPINGLISTTAB_WHISPER_CHANNEL) tab.sendMessage2:SetPoint("TOPLEFT", tab.sendMessage3, "TOPLEFT", 0, 25) tab.sendMessage1 = AskMrRobot.FontString:new(tab.shoppingPanel, nil, "ARTWORK", "GameFontNormalLarge") tab.sendMessage1:SetTextColor(0,1,0) - tab.sendMessage1:SetText("Send to a Jewelcraft or Enchanter friend :)") + tab.sendMessage1:SetText(L.AMR_SHOPPINGLISTTAB_SEND_JEWELCRAFT_ENCHANTER) tab.sendMessage1:SetPoint("TOPLEFT", tab.sendMessage2, "TOPLEFT", 0, 25) @@ -123,31 +124,31 @@ end) tab.gemsHeader = AskMrRobot.FontString:new(tab.scrollParent, nil, "ARTWORK", "GameFontNormalLarge") - tab.gemsHeader:SetText("Gems") + tab.gemsHeader:SetText(L.AMR_SHOPPINGLISTTAB_GEMS) tab.gemsHeader:SetPoint("TOPLEFT", tab.scrollParent, "TOPLEFT", 0, 0) tab.gemsQuantityHeader = AskMrRobot.FontString:new(tab.scrollParent, nil, "ARTWORK", "GameFontNormalLarge") - tab.gemsQuantityHeader:SetText("Total") + tab.gemsQuantityHeader:SetText(L.AMR_SHOPPINGLISTTAB_TOTAL) tab.gemsQuantityHeader:SetPoint("TOPLEFT", tab.scrollParent, "TOPLEFT", 370, 0) tab.enchantsHeader = AskMrRobot.FontString:new(tab.scrollParent, nil, "ARTWORK", "GameFontNormalLarge") - tab.enchantsHeader:SetText("Enchants") + tab.enchantsHeader:SetText(L.AMR_SHOPPINGLISTTAB_ENCHANTS) tab.enchantsQuantityHeader = AskMrRobot.FontString:new(tab.scrollParent, nil, "ARTWORK", "GameFontNormalLarge") - tab.enchantsQuantityHeader:SetText("Total") + tab.enchantsQuantityHeader:SetText(L.AMR_SHOPPINGLISTTAB_TOTAL) tab.enchantsQuantityHeader:SetPoint("TOPLEFT", tab.enchantsHeader, "TOPLEFT", 370, 0) tab.enchantMaterialsHeader = AskMrRobot.FontString:new(tab.scrollParent, nil, "ARTWORK", "GameFontNormalLarge") - tab.enchantMaterialsHeader:SetText("Enchant Materials") + tab.enchantMaterialsHeader:SetText(L.AMR_SHOPPINGLISTTAB_ENCHANT_MATERIALS) tab.enchantMaterialsQuantityHeader = AskMrRobot.FontString:new(tab.scrollParent, nil, "ARTWORK", "GameFontNormalLarge") - tab.enchantMaterialsQuantityHeader:SetText("Total") + tab.enchantMaterialsQuantityHeader:SetText(L.AMR_SHOPPINGLISTTAB_TOTAL) tab.enchantMaterialsQuantityHeader:SetPoint("TOPLEFT", tab.enchantMaterialsHeader, "TOPLEFT", 370, 0) tab.stamp = AskMrRobot.RobotStamp:new(nil, tab) tab.stamp:Hide() - tab.stamp.bigText:SetText("YOUR SHOPPING IS ALL DONE!") - tab.stamp.smallText:SetText("Unless you want to buy me a birthday present! I like titanium bolts and robot dogs... Or was it titanium dogs and robot bolts...") + tab.stamp.bigText:SetText(L.AMR_SHOPPINGLISTTAB_DONE) + tab.stamp.smallText:SetText(L.AMR_SHOPPINGLISTTAB_A_ROBOTS_WISHLIST) tab.stamp:SetPoint("TOPLEFT", tab.shoppingListHeader, "BOTTOMLEFT", 2, -15) tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -30, 0) tab.stamp:SetHeight(92) @@ -186,12 +187,12 @@ -- Create and bind the initialization function to the dropdown menu UIDropDownMenu_Initialize(tab.dropDown, function(self, level, menuList) - UIDropDownMenu_AddButton(AddButton(self, "a friend")) - UIDropDownMenu_AddButton(AddButton(self, "party")) - UIDropDownMenu_AddButton(AddButton(self, "raid")) - UIDropDownMenu_AddButton(AddButton(self, "guild")) - UIDropDownMenu_AddButton(AddButton(self, "channel")) - UIDropDownMenu_AddButton(AddButton(self, "mail")) + UIDropDownMenu_AddButton(AddButton(self, L.AMR_SHOPPINGLISTTAB_DROPDOWN_FRIEND)) + UIDropDownMenu_AddButton(AddButton(self, L.AMR_SHOPPINGLISTTAB_DROPDOWN_PARTY)) + UIDropDownMenu_AddButton(AddButton(self, L.AMR_SHOPPINGLISTTAB_DROPDOWN_RAID)) + UIDropDownMenu_AddButton(AddButton(self, L.AMR_SHOPPINGLISTTAB_DROPDOWN_GUILD)) + UIDropDownMenu_AddButton(AddButton(self, L.AMR_SHOPPINGLISTTAB_DROPDOWN_CHANNEL)) + UIDropDownMenu_AddButton(AddButton(self, L.AMR_SHOPPINGLISTTAB_DROPDOWN_MAIL)) end) function tab.dropDown:SetValue(newValue) @@ -778,7 +779,7 @@ return end - local message = "Mr. Robot says I need the following to optimize my gear:\n" + local message = L.AMR_SHOPPINGLISTTAB_MAIL_ROBOT_MESSAGE local gemList, enchantList, enchantMaterials = self:CalculateItems() @@ -824,12 +825,12 @@ MailFrameTab_OnClick(nil, 2) if AmrSendSettings.SendGems then if AmrSendSettings.SendEnchants then - SendMailSubjectEditBox:SetText('Request for gems and enchants') + SendMailSubjectEditBox:SetText(L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_GE) else - SendMailSubjectEditBox:SetText('Request for gems') + SendMailSubjectEditBox:SetText(L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_G) end else - SendMailSubjectEditBox:SetText('Request for enchants') + SendMailSubjectEditBox:SetText(L.AMR_SHOPPINGLISTTAB_MAIL_SUBJECT_E) end SendMailNameEditBox:SetText(AmrSendSettings.SendTo) SendMailBodyEditBox:SetText(message) @@ -837,22 +838,22 @@ function AskMrRobot.ShoppingListTab:Send() local chatType = nil - if AmrSendSettings.SendToType == "party" then + if AmrSendSettings.SendToType == L.AMR_SHOPPINGLISTTAB_DROPDOWN_PARTY then chatType = "PARTY" - elseif AmrSendSettings.SendToType == "guild" then + elseif AmrSendSettings.SendToType == L.AMR_SHOPPINGLISTTAB_DROPDOWN_GUILD then chatType = "GUILD" - elseif AmrSendSettings.SendToType == "raid" then + elseif AmrSendSettings.SendToType == L.AMR_SHOPPINGLISTTAB_DROPDOWN_RAID then chatType = "RAID" - elseif AmrSendSettings.SendToType == "channel" then + elseif AmrSendSettings.SendToType == L.AMR_SHOPPINGLISTTAB_DROPDOWN_CHANNEL then chatType = "CHANNEL" - elseif AmrSendSettings.SendToType == "mail" then + elseif AmrSendSettings.SendToType == L.AMR_SHOPPINGLISTTAB_DROPDOWN_MAIL then self:sendMail() return else chatType = "WHISPER" end - local message = "Mr. Robot says I need" + local message = L.AMR_SHOPPINGLISTTAB_CHAT_ROBOT_MESSAGE local count = 0 @@ -896,7 +897,7 @@ if count == 2 then tinsert(self.messageQueue, {message = message, chatType = chatType, chatChannel = AmrSendSettings.SendTo}) count = 0 - message = "Mr. Robot says I need" + message = L.AMR_SHOPPINGLISTTAB_CHAT_ROBOT_MESSAGE end end end
--- a/ui/SummaryTab.lua Wed May 21 00:01:02 2014 -0500 +++ b/ui/SummaryTab.lua Thu Jul 10 12:24:59 2014 -0700 @@ -1,4 +1,5 @@ local _, AskMrRobot = ... +local L = AskMrRobot.L; AskMrRobot.SummaryTab = AskMrRobot.inheritsFrom(AskMrRobot.Frame) @@ -15,12 +16,12 @@ local text = tab:CreateFontString("AmrSummaryText1", "ARTWORK", "GameFontNormalLarge") text:SetPoint("TOPLEFT", 0, -5) - text:SetFormattedText("Summary") + text:SetFormattedText(L.AMR_SUMMARYTAB_TITLE) -- error text tab.errorText1 = tab:CreateFontString("AmrSummaryErrorText1", "ARTWORK", "GameFontRedLarge") tab.errorText1:SetPoint("TOPLEFT", "AmrSummaryText1", "BOTTOMLEFT", 0, -20) - tab.errorText1:SetText("You have no optimizations imported.") + tab.errorText1:SetText(L.AMR_SUMMARYTAB_NO_IMPORT) tab.errorText1:SetPoint("RIGHT", -20, 0) tab.errorText1:SetWidth(tab.errorText1:GetWidth()) tab.errorText1:SetWordWrap(true) @@ -31,7 +32,7 @@ tab.errorText2:SetPoint("RIGHT", -20, 0) tab.errorText2:SetWidth(tab.errorText2:GetWidth()) tab.errorText2:SetJustifyH("LEFT") - tab.errorText2:SetText('Click the "Import" tab to get started.') + tab.errorText2:SetText(L.AMR_SUMMARYTAB_GET_STARTED) -- bad items tab.badItemSlots = {} @@ -57,7 +58,7 @@ itemText:SetPoint("LEFT", 0, 0) itemText:SetPoint("RIGHT", -30, 0) itemText:SetPoint("TOP", "AmrBadItemSlot0", "TOP", 0, 0 ) - itemText:SetText("Please upgrade the following items:") + itemText:SetText(L.AMR_SUMMARYTAB_GO_UPGRADE) itemText:SetJustifyH("LEFT") itemText:Hide() tab.upgradeInstructions = itemText @@ -67,7 +68,7 @@ itemText:SetPoint("RIGHT", "AmrBadItemSlot0", "RIGHT", 0, -20) itemText:SetPoint("TOP", tab.upgradeInstructions, "BOTTOM", 0, -10 ) itemText:SetHeight(20) - itemText:SetText("Slot") + itemText:SetText(L.AMR_SUMMARYTAB_SLOT) itemText:SetJustifyH("LEFT") itemText:Hide() tab.upgradeSlotHeader = itemText @@ -77,7 +78,7 @@ itemText:SetPoint("RIGHT", "AmrBadItemName0", "RIGHT", 0, 0) itemText:SetPoint("TOP", tab.upgradeSlotHeader, "TOP", 0, 0) itemText:SetPoint("BOTTOM", tab.upgradeSlotHeader, "BOTTOM", 0, 0) - itemText:SetText("Item Name") + itemText:SetText(L.AMR_SUMMARYTAB_ITEM_NAME) itemText:SetJustifyH("LEFT") itemText:Hide() tab.upgradeItemHeader = itemText @@ -125,7 +126,7 @@ end tab.importInfo = tab:CreateFontString(nil, "ARTWORK", "GameFontNormal") - tab.importInfo:SetText("Last import: ?\rThese optimizations are for ?") + tab.importInfo:SetText(L.AMR_SUMMARYTAB_LAST_IMPORT) tab.importInfo:SetPoint("TOPLEFT", text, "BOTTOMLEFT", 0, -20) tab.importInfo:SetJustifyH("LEFT") tab.importInfo:Hide() @@ -139,7 +140,7 @@ tab.stamp = AskMrRobot.RobotStamp:new(nil, tab) tab.stamp:Hide() - tab.stamp.smallText:SetText("Congratulations! You are 100% optimal") + tab.stamp.smallText:SetText(L.AMR_SUMMARYTAB_OPTIMAL) tab.stamp:SetPoint("TOPLEFT", tab.specIcon, "BOTTOMLEFT", 2, -25) tab.stamp:SetPoint("RIGHT", tab, "RIGHT", -20, 0) tab.stamp:Hide() @@ -153,27 +154,27 @@ tab.optimizationSummary = tab:CreateFontString(nil, "ARTWORK", "GameFontNormal") tab.optimizationSummary:SetPoint("TOPLEFT", tab.specIcon, "BOTTOMLEFT", 0, -15) - tab.optimizationSummary:SetText("You have ? optimizations to make:") + tab.optimizationSummary:SetText(L.AMR_SUMMARYTAB_OPTIMIZATIONS_TO_GO) tab.optimizationSummary:Hide() tab.gemCount = tab:CreateFontString(nil, "ARTWORK", "GameFontWhite") tab.gemCount:SetPoint("TOPLEFT", tab.optimizationSummary, "BOTTOMLEFT", 0, -15) - tab.gemCount:SetText("? gems") + tab.gemCount:SetText(L.AMR_SUMMARYTAB_GEMS_TO_GO) tab.gemCount:Hide() tab.enchantCount = tab:CreateFontString(nil, "ARTWORK", "GameFontWhite") tab.enchantCount:SetPoint("TOPLEFT", tab.gemCount, "BOTTOMLEFT", 0, -5) - tab.enchantCount:SetText("? enchants") + tab.enchantCount:SetText(L.AMR_SUMMARYTAB_ENCHANTS_TO_GO) tab.enchantCount:Hide() tab.reforgeCount = tab:CreateFontString(nil, "ARTWORK", "GameFontWhite") tab.reforgeCount:SetPoint("TOPLEFT", tab.enchantCount, "BOTTOMLEFT", 0, -5) - tab.reforgeCount:SetText("? reforges") + tab.reforgeCount:SetText(L.AMR_SUMMARYTAB_REFORGES_TO_GO) tab.reforgeCount:Hide() tab.instructions = tab:CreateFontString(nil, "ARTWORK", "GameFontWhite") tab.instructions:SetPoint("TOPLEFT", tab.reforgeCount, "BOTTOMLEFT", 0, -15) - tab.instructions:SetText("View the Gem, Enchant and Reforge tabs for suggested optimizations.") + tab.instructions:SetText(L.AMR_SUMMARYTAB_VIEW_TABS) tab.instructions:Hide() return tab @@ -246,22 +247,22 @@ end end - self.gemCount:SetFormattedText("%d \1244gem:gems;", gemCount) + self.gemCount:SetFormattedText(L.AMR_SUMMARYTAB_GEMCOUNT, gemCount) local enchantCount = 0 for slotNum, badEnchant in pairs(AskMrRobot.itemDiffs.enchants) do enchantCount = enchantCount + 1 end - self.enchantCount:SetFormattedText("%d \1244enchant:enchants;", enchantCount) + self.enchantCount:SetFormattedText(L.AMR_SUMMARYTAB_ENCHANTCOUNT, enchantCount) local reforgeCount = 0 for slotNum, badReforge in pairs(AskMrRobot.itemDiffs.reforges) do reforgeCount = reforgeCount + 1 end - self.reforgeCount:SetFormattedText("%d \1244reforge:reforges;", reforgeCount) - self.optimizationSummary:SetFormattedText("You have %d \1244optimization:optimizations; to make:", gemCount + enchantCount + reforgeCount) + self.reforgeCount:SetFormattedText(L.AMR_SUMMARYTAB_REFORGECOUNT, reforgeCount) + self.optimizationSummary:SetFormattedText(L.AMR_SUMMARYTAB_OPTIMIZATIONCOUNT, gemCount + enchantCount + reforgeCount) if gemCount + enchantCount + reforgeCount == 0 then self.stamp:Show() @@ -282,16 +283,16 @@ local activeSpecGroup = GetActiveSpecGroup() if activeSpecGroup == nil then - self.importInfo:SetFormattedText("Last import: %s\rThese optimizations are for %s", self.importDate, UnitName("player")) + self.importInfo:SetFormattedText(L.AMR_SUMMARYTAB_LAST_IMPORT_1, self.importDate, UnitName("player")) else - self.importInfo:SetFormattedText("Last import: %s\rThese optimizations are for %s's...", self.importDate, UnitName("player")) + self.importInfo:SetFormattedText(L.AMR_SUMMARYTAB_LAST_IMPORT_2, self.importDate, UnitName("player")) local spec = GetSpecialization(false, false, group); if spec then local _, name, _, icon = GetSpecializationInfo(spec); if activeSpecGroup == 1 then - self.specText:SetFormattedText("Primary Spec - %s", name) + self.specText:SetFormattedText(L.AMR_SUMMARYTAB_LAST_IMPORT_PSPEC, name) else - self.specText:SetFormattedText("Secondary Spec - %s", name) + self.specText:SetFormattedText(L.AMR_SUMMARYTAB_LAST_IMPORT_SSPEC, name) end self.specIcon:SetTexture(icon) end @@ -319,17 +320,17 @@ self.badItemNames[1]:Show() local warnings = {} if self.badRealm then - tinsert(warnings, "a different realm: " .. self.badRealm) + tinsert(warnings, L.AMR_SUMMARYTAB_DIFF_REALM:format(self.badRealm)) end if self.badTalents then - tinsert(warnings, "different talents") + tinsert(warnings, L.AMR_SUMMARYTAB_DIFF_TALENT) end if self.badGlyphs then - tinsert(warnings, "different glyphs") + tinsert(warnings, L.AMR_SUMMARYTAB_DIFF_GLYPHS) end - local message = "Mr. Robot optimized a different set of gear" + local message = L.AMR_SUMMARYTAB_DIFF_GEAR if #warnings > 0 then - message = message .. " (and " + message = message .. " (".. L.AMR_SUMMARYTAB_DIFF_AND.." " for k = 1, #warnings do if k > 1 then message = message .. ', ' @@ -338,8 +339,8 @@ end message = message .. ")" end - message = message .. ". Please equip the following items before proceeding with the optimizations." - self:showImportWarning("WARNING: Please check your character before proceeding:", message) + message = message .. L.AMR_SUMMARYTAB_DIFF_PLEASE_EQ + self:showImportWarning(L.AMR_SUMMARYTAB_DIFF_CHECK_CHAR, message) end if j == 1 then @@ -350,17 +351,17 @@ if i == 2 then local warnings = {} if self.badRealm then - tinsert(warnings, "a different realm: " .. self.badRealm) + tinsert(warnings, L.AMR_SUMMARYTAB_DIFF_REALM:format(self.badRealm)) end if self.badTalents then - tinsert(warnings, "different talents") + tinsert(warnings, L.AMR_SUMMARYTAB_DIFF_TALENT) end if self.badGlyphs then - tinsert(warnings, "different glyphs") + tinsert(warnings, L.AMR_SUMMARYTAB_DIFF_GLYPHS) end local message = nil if #warnings > 0 then - message = "Mr. Robot optimized for " + message = L.AMR_SUMMARYTAB_DIFF_OPTIMIZED_FOR for k = 1, #warnings do if k > 1 then message = message .. ', ' @@ -369,7 +370,7 @@ end message = message .. "." end - self:showImportWarning("WARNING: Please check your character before proceeding:", message) + self:showImportWarning(L.AMR_SUMMARYTAB_DIFF_CHECK_CHAR, message) end self.upgradeItemHeader:Show() self.upgradeSlotHeader:Show() @@ -407,7 +408,7 @@ self.optimizationSummary:Hide() if text then self.errorText1:Show() - self.errorText1:SetText('Error! Your import did not work:|n|n' .. text) + self.errorText1:SetText(L.AMR_SUMMARYTAB_IMPORT_NOT_WORK:format(text)) self.errorText1:Show() self.errorText2:SetText(text2) self.errorText2:Show()
--- a/wait.lua Wed May 21 00:01:02 2014 -0500 +++ b/wait.lua Thu Jul 10 12:24:59 2014 -0700 @@ -5,7 +5,7 @@ function AskMrRobot.wait(delay, func, ...) if(type(delay)~="number" or type(func)~="function") then - print("Bad Arguments to amr__wait"); + print(AMR_WAIT_BAD_ARGUMENTS); return false; end if(waitFrame == nil) then