diff Modules/OpenAll.lua @ 68:eadff31e61e8

Localization of all files. Testing packager settings (especially automatic locale exports), localization is not yet finished.
author Zerotorescue
date Wed, 15 Sep 2010 13:10:56 +0200
parents 1a4b2e73cef3
children 136aa3dd4dda
line wrap: on
line diff
--- a/Modules/OpenAll.lua	Tue Sep 14 11:17:38 2010 +0200
+++ b/Modules/OpenAll.lua	Wed Sep 15 13:10:56 2010 +0200
@@ -1,7 +1,8 @@
 local MailOpener = LibStub("AceAddon-3.0"):GetAddon("MailOpener");
 local mod = MailOpener:NewModule("OpenAll", "AceEvent-3.0", "AceTimer-3.0");
+local L = LibStub("AceLocale-3.0"):GetLocale("MailOpener");
 
-mod.moduleDescription = "The actual mail opening initiated by the core.";
+mod.moduleDescription = L["The actual mail opening initiated by the core."];
 mod.moduleRequired = true;
 
 --[[
@@ -41,7 +42,7 @@
 	if not self.btnOpenAll then
 		-- Open all button
 		local button = CreateFrame("Button", "btnMailOpenerOpenAll", InboxFrame, "UIPanelButtonTemplate");
-		button:SetText("Open all");
+		button:SetText(L["Open all"]);
 		button:SetHeight(26);
 		button:SetWidth(120);
 		button:SetPoint("BOTTOM", InboxFrame, "CENTER", -10, -165);
@@ -63,7 +64,7 @@
 					    if level == 1 then
 							-- Create the title of the menu
 							info.isTitle = true;
-							info.text = "Toggle filters for " .. MailOpener.db:GetCurrentProfile() .. " profile.";
+							info.text = L["Toggle filters for %s profile."]:format(MailOpener.db:GetCurrentProfile());
 							info.notCheckable = true;
 							UIDropDownMenu_AddButton(info, level);
 							
@@ -76,43 +77,43 @@
 							info.keepShownOnClick = true;
 							
 							-- Make Auction canceled option
-							info.text = "Auction canceled";
+							info.text = L["Auction canceled"];
 							info.func = function(this) mod.db.profile.filter.AH.canceled = this.checked; end;
 							info.checked = mod.db.profile.filter.AH.canceled;
 							UIDropDownMenu_AddButton(info, level);
 							
 							-- Make Auction expired option
-							info.text = "Auction expired";
+							info.text = L["Auction expired"];
 							info.func = function(this) mod.db.profile.filter.AH.expired = this.checked; end;
 							info.checked = mod.db.profile.filter.AH.expired;
 							UIDropDownMenu_AddButton(info, level);
 							
 							-- Make Auction outbid option
-							info.text = "Auction outbid";
+							info.text = L["Auction outbid"];
 							info.func = function(this) mod.db.profile.filter.AH.outbid = this.checked; end;
 							info.checked = mod.db.profile.filter.AH.outbid;
 							UIDropDownMenu_AddButton(info, level);
 							
 							-- Make Auction successful option
-							info.text = "Auction successful";
+							info.text = L["Auction successful"];
 							info.func = function(this) mod.db.profile.filter.AH.success = this.checked; end;
 							info.checked = mod.db.profile.filter.AH.success;
 							UIDropDownMenu_AddButton(info, level);
 							
 							-- Make Auction won option
-							info.text = "Auction won";
+							info.text = L["Auction won"];
 							info.func = function(this) mod.db.profile.filter.AH.won = this.checked; end;
 							info.checked = mod.db.profile.filter.AH.won;
 							UIDropDownMenu_AddButton(info, level);
 							
 							-- Make Other mail with attachments
-							info.text = "Other mail with attachments";
+							info.text = L["Other mail with attachments"];
 							info.func = function(this) mod.db.profile.filter.normalAttachments = this.checked; end;
 							info.checked = mod.db.profile.filter.normalAttachments;
 							UIDropDownMenu_AddButton(info, level);
 							
 							-- Make Other mail with gold
-							info.text = "Other mail with gold";
+							info.text = L["Other mail with gold"];
 							info.func = function(this) mod.db.profile.filter.normalMoney = this.checked; end;
 							info.checked = mod.db.profile.filter.normalMoney;
 							UIDropDownMenu_AddButton(info, level);
@@ -136,8 +137,8 @@
 				mod:Open(true, IsShiftKeyDown());
 			end
 		end);
-		button.tooltipTitle = "Open all";
-		button.tooltip = "Hold |cfffed000shift|r while clicking this button to temporarily override your filters and loot every single mail containing attachments and/or gold.\n\n|cfffed000Right|r click this button to quickly adjust mail opening filters for this profile.";
+		button.tooltipTitle = L["Open all"];
+		button.tooltip = L["Hold |cfffed000shift|r while clicking this button to temporarily override your filters and loot every single mail containing attachments and/or gold.\n\n|cfffed000Right|r click this button to quickly adjust mail opening filters for this profile."];
 		button:SetScript("OnEnter", function(self)
 			if MailOpener.db.profile.general.showHelpTooltips then
 				GameTooltip:SetOwner(self, "ANCHOR_NONE")
@@ -380,7 +381,7 @@
 			if everything and self.db.profile.filter.allowShiftClick then
 				MAIL_OPEN_EVERYTHING = true;
 				
-				print("|cff15ff00Mail Opener|r: Shift key was held while pressing the open all button. Temporarily overriding filters; going to open every mail with attachments.");
+				MailOpener:Print(L["Shift key was held while pressing the open all button. Temporarily overriding filters; going to open every mail with attachments."]);
 			else
 				MAIL_OPEN_EVERYTHING = nil;
 			end
@@ -392,7 +393,7 @@
 			self:OpenNext();
 		else
 			if MailOpener.db.profile.notifications.mailboxIsEmpty then
-				print("|cffff0000There is currently no mail available.|r");
+				print(L["|cffff0000There is currently no mail available.|r"]);
 			end
 			
 			self:Debug("MO_OPEN_COMPLETE");
@@ -431,16 +432,20 @@
 end
 
 function mod:OpenMail(index)
-	if index > 0 then
+	if index and index > 0 then
 		-- LUA arrays start at 1, so mail with index 0 doesn't exist, so we're finished
 		
 		local sender, subject, gold, cod, _, items, _, _, _, _, isGM = select(3, GetInboxHeaderInfo(index));
 		local auctionMailType = self:GetAuctionMailType(subject);
 		
+		if not subject then subject = ""; end
+		
+		local skippingString = L["Skipping %d: %s (%s)"];
+		
 		if isGM then
-			-- GM Mail
+			-- Blizzard Mail
 			if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.GMMail then
-				print("Skipping " .. index .. ": " .. subject .. " (GM mail)");
+				print(skippingString:format(index, subject, L["Blizzard mail"]));
 			end
 			
 			self:OpenNext();
@@ -449,7 +454,7 @@
 		elseif cod and cod > 0 then
 			-- Cost on delivery
 			if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.COD then
-				print("Skipping " .. index .. ": " .. subject .. " (C.O.D.)");
+				print(skippingString:format(index, subject, L["C.O.D."]));
 			end
 			
 			self:OpenNext();
@@ -468,7 +473,7 @@
 			
 			if inventoryFull and not MAIL_OPEN_EVERYTHING and not MailOpener.db.profile.general.continueOpeningStackableItems and items and items > 0 then
 				if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.inventoryFull then
-					print("Skipping " .. index .. ": " .. subject .. " (inventory is full)");
+					print(skippingString:format(index, subject, L["inventory is full"]));
 				end
 				
 				self:OpenNext();
@@ -476,7 +481,7 @@
 				return;
 			elseif self.db.profile.keepFreeSpace > 0 and items and ( slotsAvailable - items ) < self.db.profile.keepFreeSpace then
 				if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.keepFreeSpaceLimit then
-					print("Skipping " .. index .. ": " .. subject .. " (keep free space limit)");
+					print(skippingString:format(index, subject, L["keep free space limit"]));
 				end
 				
 				self:OpenNext();
@@ -502,7 +507,7 @@
 				
 				if not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.normalMoney and mailType == "normalGoldMail" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (normal mail with gold)");
+						print(skippingString:format(index, subject, L["normal mail with gold"]));
 					end
 					
 					self:OpenNext();
@@ -510,7 +515,7 @@
 					return;
 				elseif not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.normalAttachments and mailType == "normalItemsMail" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (normal mail with attachments)");
+						print(skippingString:format(index, subject, L["normal mail with attachments"]));
 					end
 					
 					self:OpenNext();
@@ -518,7 +523,7 @@
 					return;
 				elseif not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.AH.expired and mailType == "AHexpired" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (expired auction)");
+						print(skippingString:format(index, subject, L["expired auction"]));
 					end
 					
 					self:OpenNext();
@@ -526,7 +531,7 @@
 					return;
 				elseif not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.AH.success and mailType == "AHsuccess" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (successful auction)");
+						print(skippingString:format(index, subject, L["successful auction"]));
 					end
 					
 					self:OpenNext();
@@ -534,7 +539,7 @@
 					return;
 				elseif not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.AH.won and mailType == "AHwon" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (auction won)");
+						print(skippingString:format(index, subject, L["auction won"]));
 					end
 					
 					self:OpenNext();
@@ -542,7 +547,7 @@
 					return;
 				elseif not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.AH.canceled and mailType == "AHcanceled" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (canceled auction)");
+						print(skippingString:format(index, subject, L["canceled auction"]));
 					end
 					
 					self:OpenNext();
@@ -550,7 +555,7 @@
 					return;
 				elseif not MAIL_OPEN_EVERYTHING and not self.db.profile.filter.AH.outbid and mailType == "AHoutbid" then
 					if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped[mailType] then
-						print("Skipping " .. index .. ": " .. subject .. " (outbid on auction)");
+						print(skippingString:format(index, subject, L["outbid on auction"]));
 					end
 					
 					self:OpenNext();
@@ -569,9 +574,9 @@
 					
 					if MailOpener.db.profile.notifications.processed.all and MailOpener.db.profile.notifications.processed[mailType] then
 						if gold and gold > 0 then
-							print("Processing " .. index .. ": " .. subject .. " (" .. MailOpener:FormatMoney(gold) .. ")");
+							print(L["Processing %d: %s (%s)"]:format(index, subject, MailOpener:FormatMoney(gold)));
 						else
-							print("Processing " .. index .. ": " .. subject);
+							print(L["Processing %d: %s"]:format(index, subject));
 						end
 					end
 					
@@ -582,11 +587,7 @@
 		else
 			-- Unknown, probably just text
 			if MailOpener.db.profile.notifications.skipped.all and MailOpener.db.profile.notifications.skipped.other then
-				if subject then
-					print("Skipping " .. index .. ": " .. subject);
-				else
-					print("Skipping " .. index);
-				end
+				print(L["Skipping %d: %s"]:format(index, subject));
 			end
 			
 			self:OpenNext();
@@ -594,7 +595,7 @@
 	else
 		-- Finished!
 		if MailOpener.db.profile.notifications.finishedCurrentBatch then
-			print("Finished opening the current batch.");
+			print(L["Finished opening the current batch."]);
 		end
 		
 		self:SetOpeningStatus(false);
@@ -628,13 +629,13 @@
 end
 
 local mailRemainingPatterns = {
-	minutesSeconds = "|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r minutes and |cffffffff%d|r seconds (next refresh in |cffffffff%d|r seconds).";
-	minutes = "|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r minutes (next refresh in |cffffffff%d|r seconds).";
-	seconds = "|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r seconds (next refresh in |cffffffff%d|r seconds).";
-	nextRefresh = "|cffffffff%d|r/|cffffffff%d|r mail remaining, next refresh in |cffffffff%d|r seconds.";
-	waitingBatch = "|cffffffff%d|r/|cffffffff%d|r mail remaining - waiting for something from the current batch to be opened...";
-	waitingSync = "|cffffffff%d|r/|cffffffff%d|r mail remaining - waiting for the next mailbox refresh...";
-	soon = "|cffffffff%d|r/|cffffffff%d|r mail remaining - everything will be opened soon...";
+	minutesSeconds = L["|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r minutes and |cffffffff%d|r seconds (next refresh in |cffffffff%d|r seconds)."],
+	minutes = L["|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r minutes (next refresh in |cffffffff%d|r seconds)."],
+	seconds = L["|cffffffff%d|r/|cffffffff%d|r mail remaining, opening everything will take about |cffffffff%d|r seconds (next refresh in |cffffffff%d|r seconds)."],
+	nextRefresh = L["|cffffffff%d|r/|cffffffff%d|r mail remaining, next refresh in |cffffffff%d|r seconds."],
+	waitingBatch = L["|cffffffff%d|r/|cffffffff%d|r mail remaining - waiting for something from the current batch to be opened..."],
+	waitingSync = L["|cffffffff%d|r/|cffffffff%d|r mail remaining - waiting for the next mailbox refresh..."],
+	soon = L["|cffffffff%d|r/|cffffffff%d|r mail remaining - everything will be opened soon..."],
 };
 
 function mod:UpdateTimer()
@@ -739,9 +740,9 @@
 	opening = openingStatus;
 	
 	if openingStatus then
-		self.btnOpenAll:SetText("Opening...");
+		self.btnOpenAll:SetText(L["Opening..."]);
 	else
-		self.btnOpenAll:SetText("Open all");
+		self.btnOpenAll:SetText(L["Open all"]);
 	end
 end
 
@@ -749,30 +750,30 @@
 	local configGroup = {
 		order = 300,
 		type = "group",
-		name = "Open All",
-		desc = "Change open all settings.",
+		name = L["Open All"],
+		desc = L["Change open all settings."],
 		args = {
 			filters = {
 				order = 10,
 				type = "group",
 				inline = true,
-				name = "Filters",
+				name = L["Filters"],
 				args = {
 					description = {
 						order = 10,
 						type = "description",
-						name = "Toggle which mail the opener should autoloot.",
+						name = L["Toggle which mail the opener should autoloot."],
 					},
 					AHHeader = {
 						order = 15,
 						type = "header",
-						name = "Auction House Mail",
+						name = L["Auction House Mail"],
 					},
 					canceled = {
 						order = 20,
 						type = "toggle",
-						name = "Open all |cfffed000auction canceled|r mail",
-						desc = "Automatically loot all auction canceled mail from the auction house.",
+						name = L["Open all |cfffed000auction canceled|r mail"],
+						desc = L["Automatically loot all auction canceled mail from the auction house."],
 						set = function(i, v) self.db.profile.filter.AH.canceled = v; end,
 						get = function() return self.db.profile.filter.AH.canceled; end,
 						width = "double",
@@ -780,8 +781,8 @@
 					expired = {
 						order = 21,
 						type = "toggle",
-						name = "Open all |cfffed000auction expired|r mail",
-						desc = "Automatically loot all auction canceled mail from the auction house.",
+						name = L["Open all |cfffed000auction expired|r mail"],
+						desc = L["Automatically loot all auction expired mail from the auction house."],
 						set = function(i, v) self.db.profile.filter.AH.expired = v; end,
 						get = function() return self.db.profile.filter.AH.expired; end,
 						width = "double",
@@ -789,8 +790,8 @@
 					outbid = {
 						order = 22,
 						type = "toggle",
-						name = "Open all |cfffed000outbid on|r mail",
-						desc = "Automatically loot all auction outbid mail from the auction house.",
+						name = L["Open all |cfffed000outbid on|r mail"],
+						desc = L["Automatically loot all auction outbid mail from the auction house."],
 						set = function(i, v) self.db.profile.filter.AH.outbid = v; end,
 						get = function() return self.db.profile.filter.AH.outbid; end,
 						width = "double",
@@ -798,8 +799,8 @@
 					success = {
 						order = 23,
 						type = "toggle",
-						name = "Open all |cfffed000auction successful|r mail",
-						desc = "Automatically loot all auction successful mail from the auction house.",
+						name = L["Open all |cfffed000auction successful|r mail"],
+						desc = L["Automatically loot all auction successful mail from the auction house."],
 						set = function(i, v) self.db.profile.filter.AH.success = v; end,
 						get = function() return self.db.profile.filter.AH.success; end,
 						width = "double",
@@ -807,8 +808,8 @@
 					won = {
 						order = 24,
 						type = "toggle",
-						name = "Open all |cfffed000auction won|r mail",
-						desc = "Automatically loot all auction won mail from the auction house.",
+						name = L["Open all |cfffed000auction won|r mail"],
+						desc = L["Automatically loot all auction won mail from the auction house."],
 						set = function(i, v) self.db.profile.filter.AH.won = v; end,
 						get = function() return self.db.profile.filter.AH.won; end,
 						width = "double",
@@ -816,13 +817,13 @@
 					normalHeader = {
 						order = 30,
 						type = "header",
-						name = "Remaining Mail",
+						name = L["Remaining Mail"],
 					},
 					normalAttachments = {
 						order = 40,
 						type = "toggle",
-						name = "Normal mail with |cfffed000attachments|r",
-						desc = "Automatically loot all normal mail containing attachments (CoDs and Blizzard mail will be skipped).",
+						name = L["Normal mail with |cfffed000attachments|r"],
+						desc = L["Automatically loot all normal mail containing attachments (CoDs and Blizzard mail will be skipped)."],
 						set = function(i, v) self.db.profile.filter.normalAttachments = v; end,
 						get = function() return self.db.profile.filter.normalAttachments; end,
 						width = "double",
@@ -830,8 +831,8 @@
 					normalMoney = {
 						order = 50,
 						type = "toggle",
-						name = "Normal mail with |cfffed000gold|r",
-						desc = "Automatically loot all normal mail containing gold (CoDs and Blizzard mail will be skipped).",
+						name = L["Normal mail with |cfffed000gold|r"],
+						desc = L["Automatically loot all normal mail containing gold (CoDs and Blizzard mail will be skipped)."],
 						set = function(i, v) self.db.profile.filter.normalMoney = v; end,
 						get = function() return self.db.profile.filter.normalMoney; end,
 						width = "double",
@@ -839,8 +840,8 @@
 					allowShiftClick = {
 						order = 60,
 						type = "toggle",
-						name = "Allow shift-clicking of the |cfffed000Open All|r button to autoloot |cfffed000everything|r, regardless of the above filters.",
-						desc = "Allow shift-clicking of the |cfffed000Open All|r button to autoloot |cfffed000everything|r with attachments, temporarily overriding all filters.",
+						name = L["Allow shift-clicking of the |cfffed000Open All|r button to autoloot |cfffed000everything|r, regardless of the above filters."],
+						desc = L["Allow shift-clicking of the |cfffed000Open All|r button to autoloot |cfffed000everything|r with attachments, temporarily overriding all filters."],
 						set = function(i, v) self.db.profile.filter.allowShiftClick = v; end,
 						get = function() return self.db.profile.filter.allowShiftClick; end,
 						width = "full",
@@ -852,21 +853,21 @@
 				order = 20,
 				type = "group",
 				inline = true,
-				name = "Opening Interval",
+				name = L["Opening Interval"],
 				args = {
 					description = {
 						order = 10,
 						type = "description",
 						name = function()
-							local defaultString = "The default behaviour for opening mail is to only do so right after new mail was received from the server. If you close the mailbox or your inventory is full before everything is opened you will have to click the open all button manually or wait for a next mailbox refresh.\n\n";
+							local defaultString = L["The default behavior for opening mail is to only do so right after new mail was received from the server. If you close the mailbox or your inventory is full before everything is opened you will have to click the open all button manually or wait for a next mailbox refresh."] .. "\n\n";
 							
 							local currentSettings = "";
 							if MailOpener.db.profile.general.continueOpening then
-								currentSettings = currentSettings .. "Mail Opener will |cff00ff00continue|r to attempt to open the remaining mail every |cfffed000" .. MailOpener.db.profile.general.waitTime .. " seconds|r. ";
+								currentSettings = currentSettings .. L["Mail Opener will |cff00ff00continue|r to attempt to open the remaining mail every |cfffed000%d seconds|r."]:format(MailOpener.db.profile.general.waitTime) .. " ";
 							else
-								currentSettings = currentSettings .. "Mail Opener will |cffff0000not|r continue to attempt to open the remaining mail and will only start opening when new mail has just been received from the server. ";
+								currentSettings = currentSettings .. L["Mail Opener will |cffff0000not|r continue to attempt to open the remaining mail and will only start opening when new mail has just been received from the server."] .. " ";
 							end
-							currentSettings = currentSettings .. "The first batch after each server refresh will be opened after waiting |cfffed000" .. MailOpener.db.profile.general.initialDelay .. " seconds|r.";
+							currentSettings = currentSettings .. L["The first batch after each server refresh will be opened after waiting |cfffed000%d seconds|r."]:format(MailOpener.db.profile.general.initialDelay);
 							return defaultString .. currentSettings;
 						end,
 					},
@@ -878,8 +879,8 @@
 					continueOpening = {
 						order = 20,
 						type = "toggle",
-						name = "Continue opening mail",
-						desc = "Continue opening mail at the interval set below, even if the mailbox wasn't refreshed recently.",
+						name = L["Continue opening mail"],
+						desc = L["Continue opening mail at the interval set below, even if the mailbox wasn't refreshed recently."],
 						width = "full",
 						get =  function() return MailOpener.db.profile.general.continueOpening; end,
 						set = function(i, v) MailOpener.db.profile.general.continueOpening = v; end,
@@ -891,8 +892,8 @@
 						min = 0.5,
 						max = 60,
 						step = 0.5,
-						name = "Continued Mail Opening Interval",
-						desc = "Change the interval at which Mail Opener tries to continue opening mail after opening the mailbox. Please note that this setting does not reduce the game's normal 60 seconds wait time for mail.\n\nThe default value is 5 seconds.",
+						name = L["Continued Mail Opening Interval"],
+						desc = L["Change the interval at which Mail Opener tries to continue opening mail after opening the mailbox. Please note that this setting does not reduce the game's normal 60 seconds wait time for mail.\n\nThe default value is 5 seconds."],
 						get = function() return MailOpener.db.profile.general.waitTime; end,
 						set = function(i, v) MailOpener.db.profile.general.waitTime = v; end,
 						disabled = function() return (not MailOpener.db.profile.general.continueOpening); end,
@@ -904,8 +905,8 @@
 						min = 0.5,
 						max = 60,
 						step = 0.5,
-						name = "Initial Mail Opening Delay",
-						desc = "Change the delay before Mail Opener tries opening mail after opening the mailbox or new mail has been received from the server.\n\nThe default value is 0.5 seconds.",
+						name = L["Initial Mail Opening Delay"],
+						desc = L["Change the delay before Mail Opener tries opening mail after opening the mailbox or new mail has been received from the server.\n\nThe default value is 0.5 seconds."],
 						get = function() return MailOpener.db.profile.general.initialDelay; end,
 						set = function(i, v) MailOpener.db.profile.general.initialDelay = v; end,
 					},
@@ -915,12 +916,12 @@
 				order = 30,
 				type = "group",
 				inline = true,
-				name = "Keep Free Space",
+				name = L["Keep Free Space"],
 				args = {
 					description = {
 						order = 10,
 						type = "description",
-						name = "You can set an amount of bag space you wish to reserve when opening mail. Mail with a higher amount of attachments than available space will be skipped completely with this option set above 0.",
+						name = L["You can set an amount of bag space you wish to reserve when opening mail. Mail with a higher amount of attachments than available space will be skipped completely with this option set above 0."],
 					},
 					header = {
 						order = 15,
@@ -934,8 +935,8 @@
 						max = 100,
 						step = 1,
 						width = "double",
-						name = "Keep free space",
-						desc = "Change the amount of space to reserve for other things when opening mail. If this option is set higher than 0, mail with a higher amount of attachments than available space will be skipped completely.\n\nE.g. If this is set to 1 and you have a total of 12 slots left then any mail with 12 attachments will be skipped while one with 11 attachments would be opened.",
+						name = L["Keep free space"],
+						desc = L["Change the amount of space to reserve for other things when opening mail. If this option is set higher than 0, mail with a higher amount of attachments than available space will be skipped completely.\n\nE.g. If this is set to 1 and you have a total of 12 slots left then any mail with 12 attachments will be skipped while one with 11 attachments would be opened."],
 						set = function(i, v) self.db.profile.keepFreeSpace = v; end,
 						get = function() return self.db.profile.keepFreeSpace; end,
 					},
@@ -950,7 +951,7 @@
 					description = {
 						order = 10,
 						type = "description",
-						name = "Change the speed at which mail is opened. You should set the opening speed to the lowest latency you have in a city or experiment with setting it to the minimum.",
+						name = L["Change the speed at which mail is opened. You should set the opening speed to the lowest latency you have in a city or experiment with setting it to the minimum."],
 					},
 					header = {
 						order = 15,
@@ -964,8 +965,8 @@
 						max = 2500,
 						step = 5,
 						width = "double",
-						name = "Open single mail interval",
-						desc = "Change the mail opening speed (in microseconds) for each mail. Lower may not always be faster.",
+						name = L["Open single mail interval"],
+						desc = L["Change the mail opening speed (in microseconds) for each mail. Lower may not always be faster."],
 						get = function() return ( self.db.profile.speed * 1000 ); end,
 						set = function(i, v) self.db.profile.speed = ( v / 1000 ); end,
 					},
@@ -978,5 +979,5 @@
 end
 
 function mod:Debug(t)
-	return MailOpener:Debug("|cff00ff00OpenAll|r:" .. t);
+	return MailOpener:Debug(("|cff00ff00OpenAll|r:%s"):format(t));
 end
\ No newline at end of file