Quantcast

Partial localization coverage. More to come.

Scott Sibley [03-26-11 - 01:24]
Partial localization coverage. More to come.
Filename
Localization/enUS.lua
Modules/Appearance/Appearance.lua
Modules/Bars/Bars.lua
Modules/Border/Border.lua
Modules/Fade/Fade.lua
Modules/Gestures/Gestures.lua
Modules/Histograms/Histograms.lua
Modules/Portrait/Portrait.lua
Modules/Position/Position.lua
Modules/Texts/Texts.lua
Modules/UnitTooltip/UnitTooltip.lua
StarTip.lua
diff --git a/Localization/enUS.lua b/Localization/enUS.lua
index ed69efd..8ab084a 100644
--- a/Localization/enUS.lua
+++ b/Localization/enUS.lua
@@ -1,5 +1,5 @@
 local AceLocale = LibStub:GetLibrary("AceLocale-3.0")
-local L = AceLocale:NewLocale("StarTip", "enUS", true, true)
+local L = AceLocale:NewLocale("StarTip", "enUS", true, false)
 if not L then return end

 L["Welcome to "] = true
@@ -28,10 +28,335 @@ L["Other Frame"] = true
 L["Whether to show other frame tooltips"] = true
 L["Error Level"] = true
 L["StarTip's error level"] = true
-L["StarTip can throttle your mouseovers, so it doesn't show a tooltip if you mouse over units really fast. There are a few bugs here, which is why it's not enabled by default."] = true
+L["StarTip can throttle your mouseovers, so it doesn't show a tooltip if you mouse over units really fast. There are a few bugs, which is why it's not enabled by default."] = true
 L["Throttle Threshold"] = true
 L["Intersect Checks Rate"] = true
 L["The rate at which intersecting frames will be checked"] = true
 L["Settings"] = true
 L["Enable"] = true
 L["Enable or disable this module"] = true
+L["Inverted Modifier"] = true
+L["Whether to invert what happens when a key is pressed or not, i.e. show and hide."] = true
+L["Greetings"] = true
+L["Whether the greetings message should be shown or not"] = true
+
+
+-- UnitTooltip
+L["Unit Name"] = true
+L["Target"] = true
+L["Target:"] = true
+L["Guild"] = true
+L["Guild:"] = true
+L["Rank"] = true
+L["Rank:"] = true
+L["Realm"] = true
+L["Realm:"] = true
+L["Level"] = true
+L["Level:"] = true
+L["Gender"] = true
+L["Gender:"] = true
+L["Male"] = true
+L["Female"] = true
+L["Race"] = true
+L["Race:"] = true
+L["Class"] = true
+L["Class:"] = true
+L["Druid Form"] = true
+L["Form:"] = true
+L["Faction"] = true
+L["Faction:"] = true
+L["Status"] = true
+L["Status:"] = true
+L["Offline"] = true
+L["Divine Intervention"] = true
+L["Feigned Death"] = true
+L["Ghost"] = true
+L["Soulstoned"] = true
+L["Dead"] = true
+L["Alive"] = true
+L["Health"] = true
+L["Health:"] = true
+L["Unknown"] = true
+L["Mana"] = true
+L["Unknown"] = true
+L["Effects"] = true
+L["Effects:"] = true
+L["Banished"] = true
+L["Charmed"] = true
+L["Confused"] = true
+L["Disoriented"] = true
+L["Feared"] = true
+L["Frozen"] = true
+L["Horrified"] = true
+L["Incapacitated"] = true
+L["Polymorphed"] = true
+L["Sapped"] = true
+L["Shackled"] = true
+L["Asleep"] = true
+L["Stunned"] = true
+L["Turned"] = true
+L["Disarmed"] = true
+L["Pacified"] = true
+L["Rooted"] = true
+L["Silenced"] = true
+L["Ensnared"] = true
+L["Enraged"] = true
+L["Wounded"] = true
+L["Has Control"] = true
+L["Marquee"] = true
+L["Memory Usage"] = true
+L['Memory Usage:'] = true
+L["CPU Usage"] = true
+L["Note that you must turn on CPU profiling"] = true
+L["CPU Usage:"] = true
+L["Talents"] = true
+L['Talents:'] = true
+L["Current Role"] = true
+L["Old Role"] = true
+L["Avg Item Level"] = true
+L["Zone"] = true
+L["Zone:"] = true
+L["Location"] = true
+L["Location:"] = true
+L["Range"] = true
+L["Target is over %d yards"] = true
+L["Between %s and %s yards"] = true
+L["Movement"] = true
+L["Pitch: %.1f"] = true
+L["Speed: %.1f"] = true
+L["Guild Note"] = true
+L["Guild Note:"] = true
+L["Main"] = true
+L["Main:"] = true
+L["Spell Cast"] = true
+L["Channeling:"] = true
+L["Casting:"] = true
+L["Fails"] = true
+L["Fails: %d"] = true
+L["Threat"] = true
+-- UnitTooltip options
+L["Add Line"] = true
+L["Give the line a name"] = true
+L["Refresh Rate"] = true
+L["The rate at which the tooltip will be refreshed"] = true
+L["Default Color"] = true
+L["The default color for tooltip lines"] = true
+L["Restore Defaults"] = true
+L["Roll back to defaults."] = true
+L["Enabled"] = true
+L["Whether to show this line or not"] = true
+L["Left Updating"] = true
+L["Whether this line's left segment refreshes"] = true
+L["Right Updating"] = true
+L["Whether this line's right segment refreshes"] = true
+L["Move Up"] = true
+L["Move this line up by one"] = true
+L["Move Down"] = true
+L["Move this line down by one"] = true
+L["Left Outlined"] = true
+L["Whether the left widget is outlined or not"] = true
+L["None"] = true
+L["Outlined"] = true
+L["Thick Outlilned"] = true
+L["Right Outlined"] = true
+L["Whether the right widget is outlined or not"] = true
+L["Word Wrap"] = true
+L["Whether this line should word wrap lengthy text"] = true
+L["Delete"] = true
+L["Delete this line"] = true
+L["Lines"] = true
+L["Left Segment"] = true
+L["Enter code for this line's left segment."] = true
+L["Right Segment"] = true
+L["Enter code for this line's right segment."] = true
+L["Marquee Settings"] = true
+L["Note that only the left line script is used for marquee text"] = true
+L["Prefix"] = true
+L["The prefix for this marquee"] = true
+L["Postfix"] = true
+L["The postfix for this marquee"] = true
+L["Alignment"] = true
+L["The alignment information"] = true
+L["Text Update"] = true
+L["How often to update the text. A value of zero means the text won't repeatedly update."] = true
+L["Scroll Speed"] = true
+L["How fast to scroll the marquee."] = true
+L["Direction"] = true
+L["Which direction to scroll."] = true
+L["Columns"] = true
+L["How wide the marquee is. If your text is cut short then increase this value."] = true
+L["Don't right trim"] = true
+L["Prevent trimming white space to the right of text"] = true
+
+-- Mouse Gestures
+L["Left Button"] = true
+L["Right Button"] = true
+L["Center Button"] = true
+L["Up"] = true
+L["Down"] = true
+L["Add Gesture"] = true
+L["Add a gesture"] = true
+L["Restore Defaults"] = true
+L["Restore Defaults"] = true
+L["You'll need to reload your UI. Type /reload"] = true
+L["Delete"] = true
+L["Delete this widget"] = true
+
+
+-- Appearance
+L["Scale Slider"] = true
+L["Adjust tooltip scale"] = true
+L["Tooltip Font"] = true
+L["Set the tooltip's font"] = true
+L["Normal font size"] = true
+L["Set the normal font size"] = true
+L["Bold font size"] = true
+L["Set the bold font size"] = true
+L["Tooltip Border"] = true
+L["Set the tooltip's border style"] = true
+L["Tooltip Background"] = true
+L["Set the tooltip's background style"] = true
+L["Tooltip Top Padding"] = true
+L["Set the tooltip's top side padding"] = true
+L["Tooltip Bottom Padding"] = true
+L["Set the tooltip's bottom side padding"] = true
+L["Tooltip Left Padding"] = true
+L["Set the tooltip's left side padding"] = true
+L["Tooltip Right Padding"] = true
+L["Set the tooltip's right side padding"] = true
+L["Tooltip Edge Size"] = true
+L["Set the tooltip's edge size"] = true
+L["Clamp Left"] = true
+L["Clamp Right"] = true
+L["Clamp Top"] = true
+L["Clamp Bottom"] = true
+L["Background Color"] = true
+L["Set options for background color"] = true
+L["Guild and friends"] = true
+L["Background color for your guildmates and friends."] = true
+L["Hostile players"] = true
+L["Background color for hostile players."] = true
+L["Hostile non-player characters"] = true
+L["Background color for hostile non-player characters."] = true
+L["Neutral non-player characters"] = true
+L["Background color for neutral non-player characters."] = true
+L["Friendly players"] = true
+L["Background color for friendly players."] = true
+L["Friendly non-player characters"] = true
+L["Background color for friendly non-player characters."] = true
+L["Dead"] = true
+L["Background color for dead units."] = true
+L["Tapped"] = true
+L["Background color for when a unit is tapped by another."] = true
+L["Other Tooltips"] = true
+L["Background color for other tooltips."] = true
+
+-- Bars
+L["Add Bar"] = true
+L["Add a bar"] = true
+L["Delete"] = true
+L["Enabled"] = true
+L["Whether the bar is enabled or not"] = true
+L["Texture #1"] = true
+L["This bar's texture"] = true
+L["Texture #2"] = true
+L["This bar's texture"] = true
+
+-- Borders
+L["Add Border"] = true
+L["Add a border"] = true
+
+-- Fade
+L["World Units"] = true
+L["What to do with tooltips for world frames"] = true
+L["Unit Frames"] = true
+L["What to do with tooltips for unit frames"] = true
+L["Other Frames"] = true
+L["What to do with tooltips for other frames (spells, macros, items, etc..)"] = true
+L["World Objects"] = true
+L["What to do with tooltips for world objects (mailboxes, portals, etc..)"] = true
+
+
+-- Histograms
+L["Add Histogram"] = true
+L["Add a histogram"] = true
+L["Restore Defaults"] = true
+L["Restore Defaults"] = true
+L["Toggle whether this histogram is enabled or not."] = true
+
+-- Portrait
+L["Size"] = true
+L["The square portrait's width and height"] = true
+L["3d Model"] = true
+L["Whether to show the portrait as a 3d model (toggled true) or a 2d model (toggled false)"] = true
+
+-- Position
+L["World Units"] = true
+L["Where to anchor the tooltip when mousing over world characters"] = true
+L["X-axis offset: %d-%d"] = true
+L["The x-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["Y-axis offset: %d-%d"] = true
+L["The y-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["In Combat"] = true
+L["Where to anchor the world unit tooltip while in combat"] = true
+L["X-axis offset: %d-%d"] = true
+L["The x-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["Y-axis offset: %d-%d"] = true
+L["The y-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["Unit Frames"] = true
+L["Where to anchor the tooltip when mousing over a unit frame"] = true
+L["X-axis offset: %d-%d"] = true
+L["The x-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["Y-axis offset: %d-%d"] = true
+L["The y-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["Other tooltips"] = true
+L["Where to anchor most other tooltips"] = true
+L["X-axis offset: %d-%d"] = true
+L["The x-axis offset used to position the tooltip in relationship to the anchor point"] = true
+L["Y-axis offset: %d-%d"] = true
+L["The y-axis offset used to position the tooltip in relationship to the anchor point"] = true
+
+-- Texts
+L["Whether the histogram is enabled or not"] = true
+L["Add Text"] = true
+L["Add a text widget"] = true
+L["Restore Defaults"] = true
+L["Restore Defaults"] = true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Modules/Appearance/Appearance.lua b/Modules/Appearance/Appearance.lua
index 9ab21b5..0040c5b 100644
--- a/Modules/Appearance/Appearance.lua
+++ b/Modules/Appearance/Appearance.lua
@@ -8,6 +8,7 @@ local ShoppingTooltip1 = _G.ShoppingTooltip1
 local ShoppingTooltip2 = _G.ShoppingTooltip2
 local self = mod
 local LSM = _G.LibStub("LibSharedMedia-3.0")
+local L = StarTip.L

 local defaults = {
 	profile = {
@@ -61,8 +62,8 @@ end

 local options = {
 	scale = {
-		name = "Scale Slider",
-		desc = "Adjust tooltip scale",
+		name = L["Scale Slider"],
+		desc = L["Adjust tooltip scale"],
 		type = "range",
 		min = 0.25,
 		max = 4,
@@ -74,8 +75,8 @@ local options = {
 		order = 4
 	},
 	font = {
-		name = "Tooltip Font",
-		desc = "Set the tooltip's font",
+		name = L["Tooltip Font"],
+		desc = L["Set the tooltip's font"],
 		type = "select",
 		values = LSM:List("font"),
 		get = function()
@@ -88,8 +89,8 @@ local options = {
 		order = 5
 	},
 	fontSizeNormal = {
-		name = "Normal font size",
-		desc = "Set the normal font size",
+		name = L["Normal font size"],
+		desc = L["Set the normal font size"],
 		type = "input",
 		pattern = "%d",
 		get = function() return tostring(mod.db.profile.fontSizeNormal) end,
@@ -97,8 +98,8 @@ local options = {
 		order = 6
 	},
 	fontSizeBold = {
-		name = "Bold font size",
-		desc = "Set the bold font size",
+		name = L["Bold font size"],
+		desc = L["Set the bold font size"],
 		type = "input",
 		pattern = "%d",
 		get = function() return tostring(mod.db.profile.fontSizeBold) end,
@@ -107,8 +108,8 @@ local options = {
 		order = 7
 	},
 	edgeFile = {
-		name = "Tooltip Border",
-		desc = "Set the tooltip's border style",
+		name = L["Tooltip Border"],
+		desc = L["Set the tooltip's border style"],
 		type = "select",
 		values = LSM:List("border"),
 		get = function()
@@ -121,8 +122,8 @@ local options = {
 		order = 8
 	},
 	background = {
-		name = "Tooltip Background",
-		desc = "Set the tooltip's background style",
+		name = L["Tooltip Background"],
+		desc = L["Set the tooltip's background style"],
 		type = "select",
 		values = LSM:List("background"),
 		get = function()
@@ -149,8 +150,8 @@ local options = {
 		order = 10
 	},]]
 	paddingTop = {
-		name = "Tooltip Top Padding",
-		desc = "Set the tooltip's top side padding",
+		name = L["Tooltip Top Padding"],
+		desc = L["Set the tooltip's top side padding"],
 		type = "range",
 		min = -20,
 		max = 20,
@@ -160,8 +161,8 @@ local options = {
 		order = 11
 	},
 	paddingBottom = {
-		name = "Tooltip Bottom Padding",
-		desc = "Set the tooltip's bottom side padding",
+		name = L["Tooltip Bottom Padding"],
+		desc = L["Set the tooltip's bottom side padding"],
 		type = "range",
 		min = -20,
 		max = 20,
@@ -171,8 +172,8 @@ local options = {
 		order = 12
 	},
 	paddingLeft = {
-		name = "Tooltip Left Padding",
-		desc = "Set the tooltip's left side padding",
+		name = L["Tooltip Left Padding"],
+		desc = L["Set the tooltip's left side padding"],
 		type = "range",
 		min = -20,
 		max = 20,
@@ -182,8 +183,8 @@ local options = {
 		order = 13
 	},
 	paddingRight = {
-		name = "Tooltip Right Padding",
-		desc = "Set the tooltip's right side padding",
+		name = L["Tooltip Right Padding"],
+		desc = L["Set the tooltip's right side padding"],
 		type = "range",
 		min = -20,
 		max = 20,
@@ -193,8 +194,8 @@ local options = {
 		order = 14
 	},
 	edgeSize = {
-		name = "Tooltip Edge Size",
-		desc = "Set the tooltip's edge size",
+		name = L["Tooltip Edge Size"],
+		desc = L["Set the tooltip's edge size"],
 		type = "range",
 		min = 0,
 		max = 20,
@@ -204,7 +205,7 @@ local options = {
 		order = 15
 	},
 	clampLeft = {
-		name = "Clamp Left",
+		name = L["Clamp Left"],
 		type = "range",
 		min = -200,
 		max = 200,
@@ -214,7 +215,7 @@ local options = {
 		order = 16
 	},
 	clampRight = {
-		name = "Clamp Right",
+		name = L["Clamp Right"],
 		type = "range",
 		min = -200,
 		max = 200,
@@ -224,7 +225,7 @@ local options = {
 		order = 17
 	},
 	clampTop = {
-		name = "Clamp Top",
+		name = L["Clamp Top"],
 		type = "range",
 		min = -200,
 		max = 200,
@@ -234,7 +235,7 @@ local options = {
 		order = 18
 	},
 	clampBottom = {
-		name = "Clamp Bottom",
+		name = L["Clamp Bottom"],
 		type = "range",
 		min = -200,
 		max = 200,
@@ -244,8 +245,8 @@ local options = {
 		order = 19
 	},
 	bgColor = {
-		name = "Background Color",
-		desc = "Set options for background color",
+		name = L["Background Color"],
+		desc = L["Set options for background color"],
 		type = "group",
 		order = 100,
 		get = function(info)
@@ -260,77 +261,77 @@ local options = {
 		end,
 		args = {
 			header = {
-				name = "Background Color",
+				name = L["Background Color"],
 				type = "header",
 				order = 1
 			},
 			guild = {
-				name = "Guild and friends",
-				desc = "Background color for your guildmates and friends.",
+				name = L["Guild and friends"],
+				desc = L["Background color for your guildmates and friends."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 2
 			},
 			hostilePC = {
-				name = "Hostile players",
-				desc = "Background color for hostile players.",
+				name = L["Hostile players"],
+				desc = L["Background color for hostile players."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 3
 			},
 			hostileNPC = {
-				name = "Hostile non-player characters",
-				desc = "Background color for hostile non-player characters.",
+				name = L["Hostile non-player characters"],
+				desc = L["Background color for hostile non-player characters."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 4
 			},
 			neutralNPC = {
-				name = "Neutral non-player characters",
-				desc = "Background color for neutral non-player characters.",
+				name = L["Neutral non-player characters"],
+				desc = L["Background color for neutral non-player characters."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 5
 			},
 			friendlyPC = {
-				name = "Friendly players",
-				desc = "Background color for friendly players.",
+				name = L["Friendly players"],
+				desc = L["Background color for friendly players."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 6
 			},
 			friendlyNPC = {
-				name = "Friendly non-player characters",
-				desc = "Background color for friendly non-player characters.",
+				name = L["Friendly non-player characters"],
+				desc = L["Background color for friendly non-player characters."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 7
 			},
 			dead = {
-				name = "Dead",
-				desc = "Background color for dead units.",
+				name = L["Dead"],
+				desc = L["Background color for dead units."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 8
 			},
 			tapped = {
-				name = "Tapped",
-				desc = "Background color for when a unit is tapped by another.",
+				name = L["Tapped"],
+				desc = L["Background color for when a unit is tapped by another."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
 				order = 9
 			},
 			other = {
-				name = "Other Tooltips",
-				desc = "Background color for other tooltips.",
+				name = L["Other Tooltips"],
+				desc = L["Background color for other tooltips."],
 				type = "color",
 				hasAlpha = true,
 				width = "full",
diff --git a/Modules/Bars/Bars.lua b/Modules/Bars/Bars.lua
index 5024207..fa7763e 100644
--- a/Modules/Bars/Bars.lua
+++ b/Modules/Bars/Bars.lua
@@ -16,6 +16,7 @@ local WidgetBar = LibStub("LibScriptableWidgetBar-1.0")
 local LibCore = LibStub("LibScriptableLCDCore-1.0")
 local Utils = LibStub("LibScriptablePluginUtils-1.0")
 local LibTimer = LibStub("LibScriptableUtilsTimer-1.0")
+local L = StarTip.L

 local environment = {}

@@ -155,8 +156,8 @@ local defaults = {
 local options = {}
 local optionsDefaults = {
 	add = {
-		name = "Add Bar",
-		desc = "Add a bar",
+		name = L["Add Bar"],
+		desc = L["Add a bar"],
 		type = "input",
 		set = function(info, v)
 			local widget = {
@@ -179,8 +180,8 @@ local optionsDefaults = {
 		order = 5
 	},
 	defaults = {
-		name = "Restore Defaults",
-		desc = "Restore Defaults",
+		name = L["Restore Defaults"],
+		desc = L["Restore Defaults"],
 		type = "execute",
 		func = function()
 			mod.db.profile.bars = copy(defaultWidgets);
@@ -497,7 +498,7 @@ function mod:RebuildOpts()
 			args = WidgetBar:GetOptions(db, StarTip.RebuildOpts, StarTip),
 		}
 		options[db.name:gsub(" ", "_")].args.delete = {
-			name = "Delete",
+			name = L["Delete"],
 			type = "execute",
 			func = function()
 				local delete = true
@@ -516,8 +517,8 @@ function mod:RebuildOpts()
 			order = 100
 		}
 		options[db.name:gsub(" ", "_")].args.enabled = {
-			name = "Enabled",
-			desc = "Whether the histogram's enabled or not",
+			name = L["Enabled"],
+			desc = L["Whether the bar is enabled or not"],
 			type = "toggle",
 			get = function() return db.enabled end,
 			set = function(info, v)
@@ -528,8 +529,8 @@ function mod:RebuildOpts()
 			order = 1
 		}
 		options[db.name:gsub(" ", "_")].args.texture1 = {
-			name = "Texture #1",
-			desc = "This bar's texture",
+			name = L["Texture #1"],
+			desc = L["This bar's texture"],
 			type = "select",
 			values = LSM:List("statusbar"),
 			get = function() return StarTip:GetLSMIndexByName("statusbar", db.texture1 or LSM:GetDefault("statusbar"))  end,
@@ -541,8 +542,8 @@ function mod:RebuildOpts()
 			order = 5,
 		}
 		options[db.name:gsub(" ", "_")].args.texture2 = {
-			name = "Texture #2",
-			desc = "This bar's texture",
+			name = L["Texture #2"],
+			desc = L["This bar's texture"],
 			type = "select",
 			values = LSM:List("statusbar"),
 			get = function() return StarTip:GetLSMIndexByName("statusbar", db.texture2 or db.texture1 or LSM:GetDefault("statusbar"))  end,
diff --git a/Modules/Border/Border.lua b/Modules/Border/Border.lua
index c53e9a7..0ddb753 100644
--- a/Modules/Border/Border.lua
+++ b/Modules/Border/Border.lua
@@ -37,8 +37,8 @@ end
 local options = {}
 local optionsDefaults = {
 	add = {
-		name = "Add Gesture",
-		desc = "Add a border",
+		name = L["Add Border"],
+		desc = L["Add a border"],
 		type = "input",
 		set = function(info, v)
 			local widget = {
@@ -54,8 +54,8 @@ local optionsDefaults = {
 		order = 5
 	},
 	defaults = {
-		name = "Restore Defaults",
-		desc = "Restore Defaults",
+		name = L["Restore Defaults"],
+		desc = L["Restore Defaults"],
 		type = "execute",
 		func = function()
 			mod.db.profile.borders = copy(defaultWidgets);
@@ -140,8 +140,8 @@ function mod:RebuildOpts()
 			args=WidgetColor:GetOptions(db, StarTip.RebuildOpts, StarTip)
 		}
 		options[db.name:gsub(" ", "_")].args.delete = {
-			name = "Delete",
-			desc = "Delete this widget",
+			name = L["Delete"],
+			desc = L["Delete this widget"],
 			type = "execute",
 			func = function()
 				self.db.profile.borders[i] = nil
diff --git a/Modules/Fade/Fade.lua b/Modules/Fade/Fade.lua
index 626c93b..edfa14e 100644
--- a/Modules/Fade/Fade.lua
+++ b/Modules/Fade/Fade.lua
@@ -5,6 +5,7 @@ local GameTooltip = _G.GameTooltip
 local StarTip = _G.StarTip
 local UnitExists = _G.UnitExists
 local self = mod
+local L = StarTip.L

 local defaults = {
 	profile = {
@@ -30,8 +31,8 @@ end

 local options = {
 	units = {
-		name = "World Units",
-		desc = "What to do with tooltips for world frames",
+		name = L["World Units"],
+		desc = L["What to do with tooltips for world frames"],
 		type = "select",
 		values = choices,
 		get = get,
@@ -39,8 +40,8 @@ local options = {
 		order = 4
 	},
 	unitFrames = {
-		name = "Unit Frames",
-		desc = "What to do with tooltips for unit frames",
+		name = L["Unit Frames"],
+		desc = L["What to do with tooltips for unit frames"],
 		type = "select",
 		values = choices,
 		get = get,
@@ -48,8 +49,8 @@ local options = {
 		order = 5
 	},
 	otherFrames = {
-		name = "Other Frames",
-		desc = "What to do with tooltips for other frames (spells, macros, items, etc..)",
+		name = L["Other Frames"],
+		desc = L["What to do with tooltips for other frames (spells, macros, items, etc..)"],
 		type = "select",
 		values = choices,
 		get = get,
@@ -57,23 +58,13 @@ local options = {
 		order = 6
 	},
 	objects = {
-		name = "World Objects",
-		desc = "What to do with tooltips for world objects (mailboxes, portals, etc..)",
+		name = L["World Objects"],
+		desc = L["What to do with tooltips for world objects (mailboxes, portals, etc..)"],
 		type = "select",
 		values = choices,
 		get = get,
 		set = set,
 		order = 7
-	},
-	test = {
-		name = "test",
-		type = "group",
-		args = {
-			test = {
-				name = "Test",
-				type = "toggle"
-			}
-		}
 	}
 }

diff --git a/Modules/Gestures/Gestures.lua b/Modules/Gestures/Gestures.lua
index d18d344..b420b5b 100644
--- a/Modules/Gestures/Gestures.lua
+++ b/Modules/Gestures/Gestures.lua
@@ -55,8 +55,8 @@ StopNoise()
 local options = {}
 local optionsDefaults = {
 	add = {
-		name = "Add Gesture",
-		desc = "Add a gesture",
+		name = L["Add Gesture"],
+		desc = L["Add a gesture"],
 		type = "input",
 		set = function(info, v)
 			local widget = {
@@ -75,13 +75,13 @@ local optionsDefaults = {
 		order = 5
 	},
 	defaults = {
-		name = "Restore Defaults",
-		desc = "Restore Defaults",
+		name = L["Restore Defaults"],
+		desc = L["Restore Defaults"],
 		type = "execute",
 		func = function()
 			mod.db.profile.gestures = {}
 			StarTip:RebuildOpts()
-			StarTip:Print("You'll need to reload your UI. Type /reload")
+			StarTip:Print(L["You'll need to reload your UI. Type /reload"])
 		end,
 		order = 6
 	},
@@ -150,8 +150,8 @@ function mod:RebuildOpts()
 			args=WidgetGestures:GetOptions(db, StarTip.RebuildOpts, StarTip)
 		}
 		options[db.name:gsub(" ", "_")].args.delete = {
-			name = "Delete",
-			desc = "Delete this widget",
+			name = L["Delete"],
+			desc = L["Delete this widget"],
 			type = "execute",
 			func = function()
 				self.db.profile.gestures[i] = {}
diff --git a/Modules/Histograms/Histograms.lua b/Modules/Histograms/Histograms.lua
index 199af11..03bad19 100644
--- a/Modules/Histograms/Histograms.lua
+++ b/Modules/Histograms/Histograms.lua
@@ -6,16 +6,11 @@ mod.defaultOff = true
 local _G = _G
 local StarTip = _G.StarTip
 local GameTooltip = _G.GameTooltip
-local GameTooltipStatusBar = _G.GameTooltipStatusBar
-local UnitIsPlayer = _G.UnitIsPlayer
-local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS
-local UnitSelectionColor = _G.UnitSelectionColor
-local UnitClass = _G.UnitClass
-local self = mod
 local LSM = LibStub("LibSharedMedia-3.0")
 local WidgetHistogram = LibStub("LibScriptableWidgetHistogram-1.0")
 local LibCore = LibStub("LibScriptableLCDCore-1.0")
 local LibTimer = LibStub("LibScriptableUtilsTimer-1.0")
+local L = StarTip.L

 local unit
 local environment = {}
@@ -163,8 +158,8 @@ local defaults = {
 local options = {}
 local optionsDefaults = {
 	add = {
-		name = "Add Histogram",
-		desc = "Add a histogram",
+		name = L["Add Histogram"],
+		desc = L["Add a histogram"],
 		type = "input",
 		set = function(info, v)
 			local widget = {
@@ -188,8 +183,8 @@ local optionsDefaults = {
 		order = 5
 	},
 	defaults = {
-		name = "Restore Defaults",
-		desc = "Restore Defaults",
+		name = L["Restore Defaults"],
+		desc = L["Restore Defaults"],
 		type = "execute",
 		func = function()
 			mod.db.profile.histograms = copy(defaultWidgets);
@@ -493,8 +488,8 @@ function mod:RebuildOpts()
 			args=WidgetHistogram:GetOptions(db, StarTip.RebuildOpts, StarTip)
 		}
 		options[db.name:gsub(" ", "_")].args.delete = {
-			name = "Delete",
-			desc = "Delete this widget",
+			name = L["Delete"],
+			desc = L["Delete this widget"],
 			type = "execute",
 			func = function()
 				local delete = true
@@ -513,8 +508,8 @@ function mod:RebuildOpts()
 			order = 13
 		}
 		options[db.name:gsub(" ", "_")].args.enabled = {
-			name = "Enable",
-			desc = "Toggle whether this histogram is enabled or not",
+			name = L["Enable"],
+			desc = L["Toggle whether this histogram is enabled or not."],
 			type = "toggle",
 			get = function() return db.enabled end,
 			set = function(info, v)
diff --git a/Modules/Portrait/Portrait.lua b/Modules/Portrait/Portrait.lua
index d148bff..37e14ad 100644
--- a/Modules/Portrait/Portrait.lua
+++ b/Modules/Portrait/Portrait.lua
@@ -7,6 +7,7 @@ local _G = _G
 local GameTooltip = _G.GameTooltip
 local StarTip = _G.StarTip
 local UIParent = _G.UIParent
+local L = StarTip.L

 local defaults = {
 	profile = {
@@ -18,8 +19,8 @@ local defaults = {

 local options = {
 	size = {
-		name = "Size",
-		desc = "The texture's width and height",
+		name = L["Size"],
+		desc = L["The square portrait's width and height"],
 		type = "input",
 		pattern = "%d",
 		get = function() return tostring(mod.db.profile.size) end,
@@ -33,26 +34,9 @@ local options = {
 		end,
 		order = 5
 	},
-	--[[line = {
-		name = "Line",
-		desc = "Which line to place the portrait on",
-		type = "input",
-		pattern = "%d",
-		get = function() return tostring(mod.db.profile.line) end,
-		set = function(info, val)
-			val = tonumber(val)
-			mod.db.profile.line = val
-			mod.text = StarTip.leftLines[val]
-			mod.texture:ClearAllPoints()
-			mod.texture:SetPoint("LEFT", mod.text, "LEFT")
-			model:ClearAllPoints()
-			model:SetPoint("LEFT", mod.text, "LEFT")
-		end,
-		order = 6
-	},]]
 	animated = {
-		name = "3d Model",
-		desc = "Whether to show the portrait as a 3d model (toggled true) or a 2d model (toggled false)",
+		name = L["3d Model"],
+		desc = L["Whether to show the portrait as a 3d model (toggled true) or a 2d model (toggled false)"],
 		type = "toggle",
 		get = function() return mod.db.profile.animated end,
 		set = function(info, val)
diff --git a/Modules/Position/Position.lua b/Modules/Position/Position.lua
index ed1d08a..07d8815 100644
--- a/Modules/Position/Position.lua
+++ b/Modules/Position/Position.lua
@@ -6,6 +6,7 @@ local GameTooltip = _G.GameTooltip
 local StarTip = _G.StarTip
 local UIParent = _G.UIParent
 local self = mod
+local L = StarTip.L

 local defaults = {
 	profile = {
@@ -53,8 +54,8 @@ local maxY = math.floor(GetScreenHeight()/5 + 0.5) * 5

 local options = {
 	anchor = {
-		name = "World Units",
-		desc = "Where to anchor the tooltip when mousing over world characters",
+		name = L["World Units"],
+		desc = L["Where to anchor the tooltip when mousing over world characters"],
 		type = "select",
 		values = selections,
 		get = get,
@@ -62,8 +63,8 @@ local options = {
 		order = 4
 	},
 	anchorXOffset = {
-		name = format("X-axis offset: %d-%d", minX, maxX),
-		desc = "The x-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["X-axis offset: %d-%d"], minX, maxX),
+		desc = L["The x-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -75,8 +76,8 @@ local options = {
 		order = 5
 	},
 	anchorYOffset = {
-		name = format("Y-axis offset: %d-%d", minY, maxY),
-		desc = "The y-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["Y-axis offset: %d-%d"], minY, maxY),
+		desc = L["The y-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -119,8 +120,8 @@ local options = {
 		order = 7
 	},
 	inCombat = {
-		name = "In Combat",
-		desc = "Where to anchor the world unit tooltip while in combat",
+		name = L["In Combat"],
+		desc = L["Where to anchor the world unit tooltip while in combat"],
 		type = "select",
 		values = selections,
 		get = get,
@@ -128,8 +129,8 @@ local options = {
 		order = 8
 	},
 	inCombatXOffset = {
-		name = format("X-axis offset: %d-%d", minX, maxX),
-		desc = "The x-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["X-axis offset: %d-%d"], minX, maxX),
+		desc = L["The x-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -141,8 +142,8 @@ local options = {
 		order = 9
 	},
 	inCombatYOffset = {
-		name = format("Y-axis offset: %d-%d", minY, maxY),
-		desc = "The y-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["Y-axis offset: %d-%d"], minY, maxY),
+		desc = L["The y-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -183,8 +184,8 @@ local options = {
 		order = 11
 	},
 	unitFrames = {
-		name = "Unit Frames",
-		desc = "Where to anchor the tooltip when mousing over a unit frame",
+		name = L["Unit Frames"],
+		desc = L["Where to anchor the tooltip when mousing over a unit frame"],
 		type = "select",
 		values = selections,
 		get = get,
@@ -192,8 +193,8 @@ local options = {
 		order = 12
 	},
 	unitFramesXOffset = {
-		name = format("X-axis offset: %d-%d", minX, maxX),
-		desc = "The x-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["X-axis offset: %d-%d"], minX, maxX),
+		desc = L["The x-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -205,8 +206,8 @@ local options = {
 		order = 13
 	},
 	unitFramesYOffset = {
-		name = format("Y-axis offset: %d-%d", minY, maxY),
-		desc = "The y-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["Y-axis offset: %d-%d"], minY, maxY),
+		desc = L["The y-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -247,8 +248,8 @@ local options = {
 		order = 15
 	},
 	other = {
-		name = "Other tooltips",
-		desc = "Where to anchor tooltips that are not unit tooltips",
+		name = L["Other tooltips"],
+		desc = L["Where to anchor most other tooltips"],
 		type = "select",
 		values = selections,
 		get = get,
@@ -256,8 +257,8 @@ local options = {
 		order = 16
 	},
 	otherXOffset = {
-		name = format("X-axis offset: %d-%d", minX, maxX),
-		desc = "The x-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["X-axis offset: %d-%d"], minX, maxX),
+		desc = L["The x-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
@@ -269,8 +270,8 @@ local options = {
 		order = 17
 	},
 	otherYOffset = {
-		name = format("Y-axis offset: %d-%d", minY, maxY),
-		desc = "The y-axis offset used to position the tooltip in relationship to the anchor point",
+		name = format(L["Y-axis offset: %d-%d"], minY, maxY),
+		desc = L["The y-axis offset used to position the tooltip in relationship to the anchor point"],
 		type = "input",
 		pattern = "%d",
 		get = inputGet,
diff --git a/Modules/Texts/Texts.lua b/Modules/Texts/Texts.lua
index fcb0539..25f6893 100644
--- a/Modules/Texts/Texts.lua
+++ b/Modules/Texts/Texts.lua
@@ -20,6 +20,7 @@ local LibQTip = LibStub("LibQTip-1.0")
 local PluginUtils = LibStub("LibScriptablePluginUtils-1.0")
 local LibTimer = LibStub("LibScriptableUtilsTimer-1.0")
 local Widget = LibStub("LibScriptableWidget-1.0")
+local L = StarTip.L

 local environment = {}

@@ -251,8 +252,8 @@ local defaults = {
 local options = {}
 local optionsDefaults = {
 	add = {
-		name = "Add Text",
-		desc = "Add a text widget",
+		name = L["Add Text"],
+		desc = L["Add a text widget"],
 		type = "input",
 		set = function(info, v)
 			local widget = {
@@ -275,8 +276,8 @@ local optionsDefaults = {
 		order = 5
 	},
 	defaults = {
-		name = "Restore Defaults",
-		desc = "Restore Defaults",
+		name = L["Restore Defaults"],
+		desc = L["Restore Defaults"],
 		type = "execute",
 		func = function()
 			mod.db.profile.texts = copy(defaultWidgets);
@@ -575,8 +576,8 @@ function mod:RebuildOpts()
 			order = 100
 		}
 		options[db.name:gsub(" ", "_")].args.enabled = {
-			name = "Enabled",
-			desc = "Whether the histogram's enabled or not",
+			name = L["Enabled"],
+			desc = L["Whether the histogram is enabled or not"],
 			type = "toggle",
 			get = function() return db.enabled end,
 			set = function(info, v)
diff --git a/Modules/UnitTooltip/UnitTooltip.lua b/Modules/UnitTooltip/UnitTooltip.lua
index f9c7ccb..ac3042d 100644
--- a/Modules/UnitTooltip/UnitTooltip.lua
+++ b/Modules/UnitTooltip/UnitTooltip.lua
@@ -15,6 +15,7 @@ assert(LibEvaluator, mod.name .. " requires LibScriptableUtilsEvaluator-1.0")

 local _G = _G
 local StarTip = _G.StarTip
+local L = StarTip.L
 local self = mod
 local GameTooltip = _G.GameTooltip
 local tinsert = _G.tinsert
@@ -104,7 +105,7 @@ return Colorize((Name(unit, true) or Name(unit)) .. afk , r, g, b)
     },
     [2] = {
         name = "Target",
-        left = 'return "Target:"',
+        left = 'return L["Target:"]',
         right = [[
 if not UnitExists(unit) then return lastTarget or "None" end
 local r, g, b
@@ -126,32 +127,32 @@ return str
 		enabled = true
     },
     [3] = {
-        name = "Guild",
-        left = 'return "Guild:"',
+        name = L["Guild"],
+        left = 'return L["Guild:"]',
         right = [[
 return Guild(unit, true)
 ]],
 		enabled = true
     },
     [4] = {
-        name = "Rank",
-        left = 'return "Rank:"',
+        name = L["Rank"],
+        left = 'return L["Rank:"]',
         right = [[
 return Rank(unit)
 ]],
 		enabled = true,
     },
     [5] = {
-        name = "Realm",
-        left = 'return "Realm:"',
+        name = L["Realm"],
+        left = 'return L["Realm:"]',
         right = [[
 return Realm(unit)
 ]],
 		enabled = true
     },
     [6] = {
-        name = "Level",
-        left = 'return "Level:"',
+        name = L["Level"],
+        left = 'return L["Level:"]',
         right = [[
 local classification = Classification(unit)
 local lvl = Level(unit)
@@ -169,21 +170,21 @@ return str
 		enabled = true,
     },
 	[7] = {
-		name = "Gender",
-		left = 'return "Gender:"',
+		name = L["Gender"],
+		left = 'return L["Gender:"]',
 		right = [[
 local sex = UnitSex(unit)
 if sex == 2 then
-    return "Male"
+    return L["Male"]
 elseif sex == 3 then
-    return "Female"
+    return L["Female"]
 end
 ]],
 		enabled = true
 	},
     [8] = {
-        name = "Race",
-        left = 'return "Race:"',
+        name = L["Race"],
+        left = 'return L["Race:"]',
         right = [[
 return SmartRace(unit)
 ]],
@@ -191,7 +192,7 @@ return SmartRace(unit)
     },
     [9] = {
         name = "Class",
-        left = 'return "Class:"',
+        left = 'return L["Class:"]',
         right = [[
 local class, tag = UnitClass(unit)
 if class == UnitName(unit) then return end
@@ -207,50 +208,50 @@ return Texture(format("Interface\\Addons\\StarTip\\Media\\icons\\%s.tga", tag),
 		cols = 100
     },
 	[10] = {
-		name = "Druid Form",
-		left = 'return "Form:"',
+		name = L["Druid Form"],
+		left = 'return L["Form:"]',
 		right = [[
 return DruidForm(unit)
 ]],
 		enabled = true
 	},
     [11] = {
-        name = "Faction",
-        left = 'return "Faction:"',
+        name = L["Faction"],
+        left = 'return L["Faction:"]',
         right = [[
 return Faction(unit)
 ]],
 		enabled = true,
     },
     [12] = {
-        name = "Status",
-        left = 'return "Status:"',
+        name = L["Status"],
+        left = 'return L["Status:"]',
         right = [[
 if not UnitIsConnected(unit) then
-    return "Offline"
+    return L["Offline"]
 elseif HasAura(unit, GetSpellInfo(19752)) then
-    return "Divine Intervention"
+    return L["Divine Intervention"]
 elseif UnitIsFeignDeath(unit) then
-    return "Feigned Death"
+    return L["Feigned Death"]
 elseif UnitIsGhost(unit) then
-    return "Ghost"
+    return L["Ghost"]
 elseif UnitIsDead(unit) and HasAura(unit, GetSpellInfo(20707)) then
-    return "Soulstoned"
+    return L["Soulstoned"]
 elseif UnitIsDead(unit) then
-    return "Dead"
+    return L["Dead"]
 end
-return "Alive"
+return L["Alive"]
 ]],
 		enabled = true,
     },
     [13] = {
-        name = "Health",
-        left = 'return "Health:"',
+        name = L["Health"],
+        left = 'return L["Health:"]',
         right = [[
-if not UnitExists(unit) and self.Stop then self:Stop(); return self.lastHealth end
+if not UnitExists(unit) then self:Stop(); return self.lastHealth end
 local health, maxHealth = UnitHealth(unit), UnitHealthMax(unit)
 local r, g, b = HPColor(health, maxHealth)
-local value = "Unknown"
+local value = L["Unknown"]
 if maxHealth == 100 then
     value = Colorize(health .. "%", r, g, b)
 elseif maxHealth ~= 0 then
@@ -264,16 +265,16 @@ return value
 		enabled = true
     },
     [14] = {
-        name = "Mana",
+        name = L["Mana"],
         left = [[
 return PowerName(unit)
 ]],
         right = [[
-if not UnitExists(unit) and self.Stop then self:Stop(); return self.lastMana end
+if not UnitExists(unit) then self:Stop(); return self.lastMana end
 local mana = UnitMana(unit)
 local maxMana = UnitManaMax(unit)
 local r, g, b = PowerColor(nil, unit)
-local value = "Unknown"
+local value = L["Unknown"]
 if maxMana == 100 then
     value = Colorize(tostring(mana), r, g, b)
 elseif maxMana ~= 0 then
@@ -287,76 +288,76 @@ return value
 		update = 1000
     },
 	[15] = {
-		name = "Effects",
-		left = "return 'Effects'",
+		name = L["Effects"],
+		left = 'return L["Effects:"]',
 		right = [[
 local name = Name(unit)
 local str = ""
 if UnitIsBanished(unit) then
-    str = str .. "[Banished]"
+    str = str .. Angle(L["Banished"])
 end
 if UnitIsCharmed(unit) then
-    str = str .. "[Charmed]"
+    str = str .. Angle(L["Charmed"])
 end
 if UnitIsConfused(unit) then
-    str = str .. "[Confused]"
+    str = str .. Angle(L["Confused"])
 end
 if UnitIsDisoriented(unit) then
-    str = str .. "[Disoriented]"
+    str = str .. Angle(L["Disoriented"])
 end
 if UnitIsFeared(unit) then
-    str = str .. "[Feared]"
+    str = str .. Angle(L["Feared"])
 end
 if UnitIsFrozen(unit) then
-    str = str .. "[Frozen]"
+    str = str .. Angle(L["Frozen"])
 end
 if UnitIsHorrified(unit) then
-    str = str .. "[Horrified]"
+    str = str .. Angle(L["Horrified"])
 end
 if UnitIsIncapacitated(unit) then
-    str = str .. "[Incapacitated]"
+    str = str .. Angle(L["Incapacitated"])
 end
 if UnitIsPolymorphed(unit) then
-    str = str .. "[Polymorphed]"
+    str = str .. Angle(L["Polymorphed"])
 end
 if UnitIsSapped(unit) then
-    str = str .. "[Sapped]"
+    str = str .. Angle(L["Sapped"])
 end
 if UnitIsShackled(unit) then
-    str = str .. "[Shackled]"
+    str = str .. Angle(L["Shackled"])
 end
 if UnitIsAsleep(unit) then
-    str = str .. "[Asleep]"
+    str = str .. Angle(L["Asleep"])
 end
 if UnitIsStunned(unit) then
-    str = str .. "[Stunned]"
+    str = str .. Angle(L["Stunned"])
 end
 if UnitIsTurned(unit) then
-    str = str .. "[Turned]"
+    str = str .. Angle(L["Turned"])
 end
 if UnitIsDisarmed(unit) then
-    str = str .. "[Disarmed]"
+    str = str .. Angle(L["Disarmed"])
 end
 if UnitIsPacified(unit) then
-    str = str .. "[Pacified]"
+    str = str .. Angle(L["Pacified"])
 end
 if UnitIsRooted(unit) then
-    str = str .. "[Rooted]"
+    str = str .. Angle(L["Rooted"])
 end
 if UnitIsSilenced(unit) then
-    str = str .. "[Silenced]"
+    str = str .. Angle(L["Silenced"])
 end
 if UnitIsEnsnared(unit) then
-    str = str .. "[Ensnared]"
+    str = str .. Angle(L["Ensnared"])
 end
 if UnitIsEnraged(unit) then
-    str = str .. "[Enraged]"
+    str = str .. Angle(L["Enraged"])
 end
 if UnitIsWounded(unit) then
-    str = str .. "[Wounded]"
+    str = str .. Angle(L["Wounded"])
 end
 if str == "" then
-    return "Has Control"
+    return L["Has Control"]
 else
     return str
 end
@@ -366,8 +367,8 @@ end
         update = 500,
     },
     [16] = {
-        name = "Marquee",
-    	left = 'return "StarTip " .. _G.StarTip.version',
+        name = L["Marquee"],
+    	left = 'return "StarTip " .. StarTip.version',
 		leftUpdating = true,
 		enabled = false,
 		marquee = true,
@@ -380,8 +381,8 @@ end
 		dontRtrim = true
 	},
 	[17] = {
-		name = "Memory Usage",
-		left = "return 'Memory Usage:'",
+		name = L["Memory Usage"],
+		left = "return L['Memory Usage:']",
 		right = [[
 local mem, percent, memdiff, totalMem, totaldiff, memperc = GetMemUsage("StarTip", true)
 if mem then
@@ -396,8 +397,8 @@ end
 		update = 1000
 	},
 	[18] = {
-		name = "CPU Usage",
-		desc = "Note that you must turn on CPU profiling",
+		name = L["CPU Usage"],
+		desc = L["Note that you must turn on CPU profiling"],
 		left = 'return "CPU Usage:"',
 		right = [[
 local cpu, percent, cpudiff, totalCPU, totaldiff, cpuperc = GetCPUUsage("StarTip", true)
@@ -413,8 +414,8 @@ end
 		update = 1000
 	},
 	[19] = {
-		name = "Talents",
-		left = "return 'Talents:'",
+		name = L["Talents"],
+		left = "return L['Talents:']",
 		right = [[
 if not UnitExists(unit) then return lastTalents end
 local str = SpecText(unit)
@@ -484,10 +485,10 @@ return UnitILevel(unit)
 		deleted = true
 	},
 	[23] = {
-		name = "Zone",
+		name = L["Zone"],
 		left = [[
 -- This doesn't work. Leaving it here for now.
-return "Zone:"
+return L["Zone:"]
 ]],
 		right = [[
 return select(6, UnitGuildInfo(unit))
@@ -495,9 +496,9 @@ return select(6, UnitGuildInfo(unit))
 		enabled = false
 	},
 	[24] = {
-		name = "Location",
+		name = L["Location"],
 		left = [[
-return "Location:"
+return L["Location:"]
 ]],
 		right = [[
 return select(3, GetUnitTooltipScan(unit))
@@ -505,7 +506,7 @@ return select(3, GetUnitTooltipScan(unit))
 		enabled = true
 	},
 	[25] = {
-		name = "Range",
+		name = L["Range"],
 		left = [[
 if not UnitExists(unit) then return lastRange end
 local min, max = RangeCheck:GetRange(unit)
@@ -513,9 +514,9 @@ local str
 if not min then
     str = ""
 elseif not max then
-    str = format("Target is over %d yards", min)
+    str = format(L["Target is over %d yards"], min)
 else
-    str = "Between " .. min .. " and " .. max .. " yards"
+    str = format(L["Between %s and %s yards"], min, max)
 end
 lastRange = str
 return str
@@ -525,7 +526,7 @@ return str
 		update = 500
 	},
 	[26] = {
-		name = "Movement",
+		name = L["Movement"],
 		left = [[
 if not UnitExists(unit) then return lastMovement end
 local pitch = GetUnitPitch(unit)
@@ -548,9 +549,9 @@ return str
 		update = 500
 	},
 	[27] = {
-		name = "Guild Note",
+		name = L["Guild Note"],
 		left = [[
-return "Guild Note:"
+return L["Guild Note:"]
 ]],
 		right = [[
 return select(7, UnitGuildInfo(unit))
@@ -558,10 +559,10 @@ return select(7, UnitGuildInfo(unit))
 		enabled = true
 	},
 	[28] = {
-		name = "Main Name",
+		name = L["Main"],
 		left = [[
 -- This requires Chatter
-return "Main:"
+return L["Main:"]
 ]],
 		right = [[
 if not _G.Chatter then return end
@@ -620,14 +621,14 @@ end
 		update = 1000
 	},
 	[32] = {
-		name = "Spell Cast",
+		name = L["Spell Cast"],
 		left = [[
 local cast_data = CastData(unit)
 if cast_data then
     if cast_data.channeling then
-        return "Channeling:"
+        return L["Channeling:"]
     end
-    return "Casting:"
+    return L["Casting:"]
 end
 return ""
 ]],
@@ -659,9 +660,7 @@ if cast_data then
   else
     return icon .. spell
   end
-  return Texture("Interface\\Addons\\StarTip\\Media\\happy_face.blp", 20)
 end
-do return "" end
 ]],
 		enabled = true,
 		cols = 100,
@@ -669,17 +668,17 @@ do return "" end
 		update = 500
 	},
 	[33] = {
-		name = "Fails",
+		name = L["Fails"],
 		left = [[
 local fails = NumFails(unit)
 if fails and fails > 0 then
-  return "Fails: " .. fails
+  return format(L["Fails: %d"], fails)
 end
 ]],
 		enabled = true
 	},
 	[34] = {
-		name = "Threat",
+		name = L["Threat"],
 		left = [[
 local isTanking, status, threatpct, rawthreatpct, threatvalue = UnitDetailedThreatSituation(unit, "target")

@@ -687,7 +686,7 @@ if not threatpct then return "" end

 isTanking = isTanking and 0 or 1

-return Colorize(format("Threat: %d%% (%.2f%%)", threatpct, rawthreatpct), 1, isTanking, isTanking)
+return Colorize(format("%s: %d%% (%.2f%%)", L["Threat"], threatpct, rawthreatpct), 1, isTanking, isTanking)
 ]],
 		enabled = true,
 		update = 300,
@@ -939,8 +938,8 @@ end
 function mod:RebuildOpts()
     options = {
 		add = {
-			name = "Add Line",
-			desc = "Give the line a name",
+			name = L["Add Line"],
+			desc = L["Give the line a name"],
 			type = "input",
 			set = function(info, v)
 				if v == "" then return end
@@ -953,8 +952,8 @@ function mod:RebuildOpts()
 			order = 5
 		},
 		refreshRate = {
-			name = "Refresh Rate",
-			desc = "The rate at which the tooltip will be refreshed",
+			name = L["Refresh Rate"],
+			desc = L["The rate at which the tooltip will be refreshed"],
 			type = "input",
 			pattern = "%d",
 			get = function() return tostring(self.db.profile.refreshRate) end,
@@ -966,8 +965,8 @@ function mod:RebuildOpts()
 			order = 6
 		},
 		color = {
-			name = "Default Color",
-			desc = "The default color for tooltip lines",
+			name = L["Default Color"],
+			desc = L["The default color for tooltip lines"],
 			type = "color",
 			get = function() return self.db.profile.color.r, self.db.profile.color.g, self.db.profile.color.b end,
 			set = function(info, r, g, b)
@@ -978,8 +977,8 @@ function mod:RebuildOpts()
 			order = 7
 		},
 		defaults = {
-			name = "Restore Defaults",
-			desc = "Roll back to defaults.",
+			name = L["Restore Defaults"],
+			desc = L["Roll back to defaults."],
 			type = "execute",
 			func = function()
 				local replace = {}
@@ -1016,8 +1015,8 @@ function mod:RebuildOpts()
 			}
 			options["line" .. i].args = {
 					enabled = {
-						name = "Enabled",
-						desc = "Whether to show this line or not",
+						name = L["Enabled"],
+						desc = L["Whether to show this line or not"],
 						type = "toggle",
 						get = function() return self.db.profile.lines[i].enabled end,
 						set = function(info, val)
@@ -1028,8 +1027,8 @@ function mod:RebuildOpts()
 						order = 2
 					},
 					leftUpdating = {
-						name = "Left Updating",
-						desc = "Whether this segment refreshes",
+						name = L["Left Updating"],
+						desc = L["Whether this line's left segment refreshes"],
 						type = "toggle",
 						get = function() return v.leftUpdating end,
 						set = function(info, val)
@@ -1043,8 +1042,8 @@ function mod:RebuildOpts()
 						order = 3
 					},
 					rightUpdating = {
-						name = "Right Updating",
-						desc = "Whether this segment refreshes",
+						name = L["Right Updating"],
+						desc = L["Whether this line's right segment refreshes"],
 						type = "toggle",
 						get = function() return v.rightUpdating end,
 						set = function(info, val)
@@ -1058,8 +1057,8 @@ function mod:RebuildOpts()
 						order = 4
 					},
 					up = {
-						name = "Move Up",
-						desc = "Move this line up by one",
+						name = L["Move Up"],
+						desc = L["Move this line up by one"],
 						type = "execute",
 						func = function()
 							if i == 1 then return end
@@ -1077,8 +1076,8 @@ function mod:RebuildOpts()
 						order = 5
 					},
 					down = {
-						name = "Move Down",
-						desc = "Move this line down by one",
+						name = L["Move Down"],
+						desc = L["Move this line down by one"],
 						type = "execute",
 						func = function()
 							if i == #self.db.profile.lines then return end
@@ -1096,7 +1095,7 @@ function mod:RebuildOpts()
 						end,
 						order = 6
 					},
-					bold = {
+					--[[bold = {
 						name = "Bold",
 						desc = "Whether to bold this line or not",
 						type = "toggle",
@@ -1107,12 +1106,12 @@ function mod:RebuildOpts()
 							self:CreateLines()
 						end,
 						order = 7
-					},
+					},]]
 					leftOutlined = {
-						name = "Left Outlined",
-						desc = "Whether the left widget is outlined or not",
+						name = L["Left Outlined"],
+						desc = L["Whether the left widget is outlined or not"],
 						type = "select",
-						values = {"None", "Outlined", "Thick Outlilned"},
+						values = {L["None"], L["Outlined"], L["Thick Outlilned"]},
 						get = function() return v.leftOutlined or 1 end,
 						set = function(info, val)
 							v.leftOutlined = val
@@ -1122,10 +1121,10 @@ function mod:RebuildOpts()
 						order = 8
 					},
 					rightOutlined = {
-						name = "Right Outlined",
-						desc = "Whether the right widget is outlined or not",
+						name = L["Right Outlined"],
+						desc = L["Whether the right widget is outlined or not"],
 						type = "select",
-						values = {"None", "Outlined", "Thick Outlilned"},
+						values = {L["None"], L["Outlined"], L["Thick Outlilned"]},
 						get = function() return v.rightOutlined or 1 end,
 						set = function(info, val)
 							v.rightOutlined = val
@@ -1135,8 +1134,8 @@ function mod:RebuildOpts()
 						order = 9
 					},
 					wordwrap = {
-						name = "Word Wrap",
-						desc = "Whether this line should word wrap lengthy text",
+						name = L["Word Wrap"],
+						desc = L["Whether this line should word wrap lengthy text"],
 						type = "toggle",
 						get = function()
 							return v.wordwrap
@@ -1147,8 +1146,8 @@ function mod:RebuildOpts()
 						order = 10
 					},
 					delete = {
-						name = "Delete",
-						desc = "Delete this line",
+						name = L["Delete"],
+						desc = L["Delete this line"],
 						type = "execute",
 						func = function()
 							local name = v.name
@@ -1172,14 +1171,14 @@ function mod:RebuildOpts()
 						order = 11
 					},
 					linesHeader = {
-						name = "Lines",
+						name = L["Lines"],
 						type = "header",
 						order = 12
 					},
 					left = {
-						name = "Left",
+						name = L["Left Segment"],
 						type = "input",
-						desc = "Left text code",
+						desc = L["Enter code for this line's left segment."],
 						get = function() return escape(v.left or "") end,
 						set = function(info, val)
 							v.left = unescape(val)
@@ -1195,9 +1194,9 @@ function mod:RebuildOpts()
 						order = 13
 					},
 					right = {
-						name = "Right",
+						name = L["Right Segment"],
 						type = "input",
-						desc = "Right text code",
+						desc = L["Enter code for this line's right segment."],
 						get = function() return escape(v.right or "") end,
 						set = function(info, val)
 							v.right = unescape(val);
@@ -1210,28 +1209,17 @@ function mod:RebuildOpts()
 						order = 14
 					},
 					marquee = {
-						name = "Enhanced Settings",
+						name = "Marquee Settings",
 						type = "group",
 						args = {
 							header = {
-								name = "Note that only the left line script is used for marquee text",
+								name = L["Note that only the left line script is used for marquee text"],
 								type = "header",
 								order = 1
 							},
-							marquee = {
-								name = "Enabled",
-								desc = "Enable marquee. Note that this just makes marquees use the left line only. Technically all segments on the tooltip are marquee widgets.",
-								type = "toggle",
-								get = function() return v.marquee end,
-								set = function(info, val)
-									v.marquee = val
-									v.marqueeDirty = true
-									self:CreateLines()
-								end
-							},
 							prefix = {
-								name = "Prefix",
-								desc = "The prefix for this marquee",
+								name = L["Prefix"],
+								desc = L["The prefix for this marquee"],
 								type = "input",
 								width = "full",
 								multiline = true,
@@ -1247,7 +1235,7 @@ function mod:RebuildOpts()
 							},
 							postfix = {
 								name = "Postfix",
-								desc = "The postfix for this marquee",
+								desc = L["The postfix for this marquee"],
 								type = "input",
 								width = "full",
 								multiline = true,
@@ -1261,9 +1249,9 @@ function mod:RebuildOpts()
 								end,
 								order = 3
 							},
-							precision = {
+							--[[precision = {
 								name = "Precision",
-								desc = "How precise displayed numbers are",
+								desc = L["How precise displayed numbers are"],
 								type = "input",
 								pattern = "%d",
 								get = function()
@@ -1275,14 +1263,14 @@ function mod:RebuildOpts()
 									self:CreateLines()
 								end,
 								order = 4
-							},
+							},]]
 							align = {
-								name = "Alignment",
-								desc = "The alignment information",
+								name = L["Alignment"],
+								desc = L["The alignment information"],
 								type = "select",
 								values = WidgetText.alignmentList,
 								get = function()
-									return v.align
+									return v.align or WidgetText.defaults.alignment
 								end,
 								set = function(info, val)
 									v.align = val
@@ -1292,8 +1280,8 @@ function mod:RebuildOpts()
 								order = 5
 							},
 							update = {
-								name = "Text Update",
-								desc = "How often to update the text. Use this option if you want your line to update.",
+								name = L["Text Update"],
+								desc = L["How often to update the text. A value of zero means the text won't repeatedly update."],
 								type = "input",
 								pattern = "%d",
 								get = function()
@@ -1307,8 +1295,8 @@ function mod:RebuildOpts()
 								order = 6
 							},
 							speed = {
-								name = "Scroll Speed",
-								desc = "How fast to scroll the marquee",
+								name = L["Scroll Speed"],
+								desc = L["How fast to scroll the marquee."],
 								type = "input",
 								pattern = "%d",
 								get = function()
@@ -1322,8 +1310,8 @@ function mod:RebuildOpts()
 								order = 7
 							},
 							direction = {
-								name = "Direction",
-								desc = "Which direction to scroll",
+								name = L["Direction"],
+								desc = L["Which direction to scroll."],
 								type = "select",
 								values = WidgetText.directionList,
 								get = function()
@@ -1337,8 +1325,8 @@ function mod:RebuildOpts()
 								order = 8
 							},
 							cols = {
-								name = "Columns",
-								desc = "How wide the marquee is",
+								name = L["Columns"],
+								desc = L["How wide the marquee is. If your text is cut short then increase this value."],
 								type = "input",
 								pattern = "%d",
 								get = function()
@@ -1352,8 +1340,8 @@ function mod:RebuildOpts()
 								order = 9
 							},
 							dontRtrim = {
-								name = "Don't right trim",
-								desc = "Prevent trimming white space to the right of text",
+								name = L["Don't right trim"],
+								desc = L["Prevent trimming white space to the right of text"],
 								type = "toggle",
 								get = function()
 									return v.dontRtrim or WidgetText.defaults.dontRtrim
diff --git a/StarTip.lua b/StarTip.lua
index 67523ff..83a0816 100644
--- a/StarTip.lua
+++ b/StarTip.lua
@@ -21,6 +21,13 @@ local ipairs, pairs = _G.ipairs, _G.pairs
 local timers = {}
 local widgets = {}

+local environment = {}
+StarTip.environment = environment
+environment.StarTip = StarTip
+environment._G = _G
+environment.L = L
+
+
 local LDB = LibStub("LibDataBroker-1.1"):NewDataObject("StarTip", {
 	type = "data source",
 	text = "StarTip",
@@ -338,12 +345,9 @@ do
 	end
 end

-local environment = {}
-StarTip.environment = environment
 environment.new = StarTip.new
 environment.newDict = StarTip.newDict
 environment.del = StarTip.del
-environment._G = _G

 --[[
 PluginRangeCheck:New(environment)