Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion EUI_PartyMode_Options.lua
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ do
kbLbl:SetPoint("CENTER")

local function FormatKey(key)
if not key then return "Not Bound" end
if not key then return EllesmereUI.L("Not Bound") end
local parts = {}
for mod in key:gmatch("(%u+)%-") do
parts[#parts + 1] = mod:sub(1, 1) .. mod:sub(2):lower()
Expand Down
2 changes: 1 addition & 1 deletion EllesmereUI.lua
Original file line number Diff line number Diff line change
Expand Up @@ -11162,7 +11162,7 @@ local function ShowSidebarUnlockTip()
msg:SetWidth(TIP_W - 30)
msg:SetJustifyH("CENTER")
msg:SetSpacing(6)
msg:SetText("Unlock Mode is where you can adjust\npositioning for all the elements of EllesmereUI")
msg:SetText(EllesmereUI.L("Unlock Mode is where you can adjust\npositioning for all the elements of EllesmereUI"))

-- Okay button
local okBtn = CreateFrame("Button", nil, tip)
Expand Down
2 changes: 1 addition & 1 deletion EllesmereUIDamageMeters/EUI_DamageMeters_Options.lua
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ initFrame:SetScript("OnEvent", function(self)
kbLbl:SetPoint("CENTER")

local function FormatKey(key)
if not key then return "Not Bound" end
if not key then return EllesmereUI.L("Not Bound") end
local parts = {}
for mod in key:gmatch("(%u+)%-") do
parts[#parts + 1] = mod:sub(1, 1) .. mod:sub(2):lower()
Expand Down
30 changes: 15 additions & 15 deletions EllesmereUIDamageMeters/EllesmereUIDamageMeters.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1594,7 +1594,7 @@ local function EnsureTooltipFrame()
_ttFrame._combatMsg:SetJustifyH("CENTER"); _ttFrame._combatMsg:SetWordWrap(true)
SetDMFont(_ttFrame._combatMsg, 10)
_ttFrame._combatMsg:SetTextColor(0.6, 0.6, 0.6, 1)
_ttFrame._combatMsg:SetText("Detailed information is\nsecret while in combat")
_ttFrame._combatMsg:SetText(EllesmereUI.L("Detailed information is\nsecret while in combat"))
_ttFrame._combatMsg:Hide()

_ttFrame:SetScript("OnShow", function() _ttVisible = true end)
Expand Down Expand Up @@ -1663,7 +1663,7 @@ local function PopulatePreview(bar, curSession, curSessionID, curDMType)
-- Helper: apply header styling
local function ApplyTTHeader(playerName, typeName)
EnsureTooltipFrame()
_ttFrame._hdrText:SetText(playerName .. "'s " .. typeName .. " Breakdown")
_ttFrame._hdrText:SetText(EllesmereUI.Lf("%1$s's %2$s Breakdown", playerName, typeName))
local cfg = DB()
local hc = cfg.hdrBgColor; local hR = hc and hc.r or 0x1B/255; local hG = hc and hc.g or 0x1B/255; local hB = hc and hc.b or 0x1B/255
_ttFrame._hdrBg:SetColorTexture(hR, hG, hB, cfg.hdrBgAlpha or 1)
Expand All @@ -1688,7 +1688,7 @@ local function PopulatePreview(bar, curSession, curSessionID, curDMType)
-- Reverse to oldest-first
local reversed = {}
for ri = #raw, 1, -1 do reversed[#reversed + 1] = raw[ri] end
ApplyTTHeader(StripRealm(bar._src.name) or "Unknown", "Death Recap")
ApplyTTHeader(StripRealm(bar._src.name) or "Unknown", EllesmereUI.L("Death Recap"))
local texPath, texKey = GetBreakdownBarTexturePath()
local deathTime = reversed[#reversed] and reversed[#reversed].timestamp or GetTime()
local total = #reversed
Expand Down Expand Up @@ -1877,7 +1877,7 @@ local function PopulatePreview(bar, curSession, curSessionID, curDMType)
_ttFrame._tgtDivider:SetHeight(PhysicalPixels(1)); _ttFrame._tgtDivider:SetColorTexture(1, 1, 1, 0.15)
_ttFrame._tgtLabel = _ttFrame:CreateFontString(nil, "OVERLAY")
SetDMFont(_ttFrame._tgtLabel, 9); _ttFrame._tgtLabel:SetTextColor(0.6, 0.6, 0.6, 1)
_ttFrame._tgtLabel:SetText("Targets")
_ttFrame._tgtLabel:SetText(EllesmereUI.L("Targets"))
_ttFrame._tgtBars = {}
for ti = 1, 3 do
local tb = {}
Expand Down Expand Up @@ -2432,7 +2432,7 @@ local function CreateDMWindow(winIdx)
if not hasRecap then
EnsureTooltipFrame()
local playerName = StripRealm(bar._src.name) or "Unknown"
_ttFrame._hdrText:SetText(playerName .. "'s Death Recap")
_ttFrame._hdrText:SetText(EllesmereUI.Lf("%1$s's Death Recap", playerName))
local cfg2 = DB()
local hc = cfg2.hdrBgColor; local hR = hc and hc.r or 0x1B/255; local hG = hc and hc.g or 0x1B/255; local hB = hc and hc.b or 0x1B/255
_ttFrame._hdrBg:SetColorTexture(hR, hG, hB, cfg2.hdrBgAlpha or 1)
Expand All @@ -2441,7 +2441,7 @@ local function CreateDMWindow(winIdx)
else local tc = cfg2.hdrTextColor; tR = tc and tc.r or 1; tG = tc and tc.g or 1; tB = tc and tc.b or 1 end
_ttFrame._hdrText:SetTextColor(tR, tG, tB, 1)
for bi = 1, #_ttBars do if _ttBars[bi] then _ttBars[bi].row:Hide() end end
_ttFrame._combatMsg:SetText("No death recap available")
_ttFrame._combatMsg:SetText(EllesmereUI.L("No death recap available"))
_ttFrame._combatMsg:Show()
_ttFrame:SetSize(TT_WIDTH, TT_HDR_H + 40)
ns._AnchorBreakdownFrame(bar.row, W.frame)
Expand All @@ -2454,7 +2454,7 @@ local function CreateDMWindow(winIdx)
-- Show header with player name + type
local playerName = StripRealm(bar._src and bar._src.name) or "Unknown"
local typeName = L(DM_TYPE_NAMES[W.curDMType] or "Damage Done")
_ttFrame._hdrText:SetText(playerName .. "'s " .. typeName .. " Breakdown")
_ttFrame._hdrText:SetText(EllesmereUI.Lf("%1$s's %2$s Breakdown", playerName, typeName))
local cfg2 = DB()
local hc = cfg2.hdrBgColor; local hR = hc and hc.r or 0x1B/255; local hG = hc and hc.g or 0x1B/255; local hB = hc and hc.b or 0x1B/255
_ttFrame._hdrBg:SetColorTexture(hR, hG, hB, cfg2.hdrBgAlpha or 1)
Expand All @@ -2464,7 +2464,7 @@ local function CreateDMWindow(winIdx)
_ttFrame._hdrText:SetTextColor(tR, tG, tB, 1)
-- Hide bars, show combat message
for bi = 1, #_ttBars do if _ttBars[bi] then _ttBars[bi].row:Hide() end end
_ttFrame._combatMsg:SetText("Detailed information is\nsecret while in combat")
_ttFrame._combatMsg:SetText(EllesmereUI.L("Detailed information is\nsecret while in combat"))
_ttFrame._combatMsg:Show()
_ttFrame:SetSize(TT_WIDTH, TT_HDR_H + 40)
ns._AnchorBreakdownFrame(bar.row, W.frame)
Expand Down Expand Up @@ -2852,7 +2852,7 @@ local function CreateDMWindow(winIdx)
if #_windows >= MAX_WINDOWS then
iconTex:SetAlpha(0.2)
if EUI.HideWidgetTooltip then EUI.HideWidgetTooltip() end
if EUI.ShowWidgetTooltip then EUI.ShowWidgetTooltip(self, "You may only have " .. MAX_WINDOWS .. " windows active") end
if EUI.ShowWidgetTooltip then EUI.ShowWidgetTooltip(self, EllesmereUI.Lf("You may only have %1$d windows active", MAX_WINDOWS)) end
end
end)
else
Expand Down Expand Up @@ -3790,8 +3790,8 @@ local function CreateDMWindow(winIdx)

W.UpdateTimerText()
local isOverall = (not W.curSessionID and W.curSession == Enum.DamageMeterSessionType.Overall)
local titlePrefix = isOverall and "Overall " or ""
W._fullTitle = L(titlePrefix .. (DM_TYPE_NAMES[W.curDMType] or "Damage Done"))
local typeName = L(DM_TYPE_NAMES[W.curDMType] or "Damage Done")
W._fullTitle = isOverall and EllesmereUI.Lf("Overall %1$s", typeName) or typeName
W.FitTitle()
if winIdx == 1 then UpdateSATimerText() end

Expand Down Expand Up @@ -4110,7 +4110,7 @@ local function CreateDMWindow(winIdx)
W._targetDivider:SetHeight(PhysicalPixels(1)); W._targetDivider:SetColorTexture(1, 1, 1, 0.15)
W._targetLabel = W.srcContent:CreateFontString(nil, "OVERLAY")
SetDMFont(W._targetLabel, leftFS - 1)
W._targetLabel:SetTextColor(0.6, 0.6, 0.6, 1); W._targetLabel:SetText("Targets")
W._targetLabel:SetTextColor(0.6, 0.6, 0.6, 1); W._targetLabel:SetText(EllesmereUI.L("Targets"))
end
W._targetDivider:ClearAllPoints()
W._targetDivider:SetPoint("TOPLEFT", W.srcContent, "TOPLEFT", 0, divY)
Expand Down Expand Up @@ -4354,10 +4354,10 @@ local function CreateDMWindow(winIdx)
homeAddBtn._plus:SetText("+")
homeAddBtn._plus:SetTextColor(1, 1, 1, 0.3)
homeAddBtn._lbl:SetFont(fontPath, CTX_FONT_SZ, outline)
homeAddBtn._lbl:SetText("ADD NEW")
homeAddBtn._lbl:SetText(EllesmereUI.L("ADD NEW"))
homeAddBtn._lbl:SetTextColor(1, 1, 1, 0.3)
homeAddBtn._hint:SetFont(fontPath, 9, outline)
homeAddBtn._hint:SetText("(middle click to remove)")
homeAddBtn._hint:SetText(EllesmereUI.L("(middle click to remove)"))
homeAddBtn._hint:SetTextColor(1, 1, 1, 0.3)
-- Center the group: offset label so plus+label+hint are visually centered
local plusW = homeAddBtn._plus:GetStringWidth() + 4
Expand All @@ -4381,7 +4381,7 @@ local function CreateDMWindow(winIdx)
for dt, n in pairs(DM_TYPE_NAMES) do
local pinned = false
for _, b in ipairs(bookmarks) do if b == dt then pinned = true; break end end
if not pinned then items[#items + 1] = { text = n, onClick = function()
if not pinned then items[#items + 1] = { text = EllesmereUI.L(n), onClick = function()
bookmarks[#bookmarks + 1] = dt; RefreshHome()
end } end
end
Expand Down
5 changes: 3 additions & 2 deletions EllesmereUIMythicTimer/EllesmereUIMythicTimer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1626,8 +1626,9 @@ local function RenderStandalone()
ApplyShadow(f._deathFS)
local dR, dG, dB = GetColor(p.deathTextColor, 0.93, 0.33, 0.33)
f._deathFS:SetTextColor(dR, dG, dB)
f._deathFS:SetText(format("%d Death%s -%s",
run.deaths, run.deaths ~= 1 and "s" or "", FormatTime(run.deathTimeLost)))
f._deathFS:SetText(run.deaths == 1
and EllesmereUI.Lf("%1$d Death -%2$s", run.deaths, FormatTime(run.deathTimeLost))
or EllesmereUI.Lf("%1$d Deaths -%2$s", run.deaths, FormatTime(run.deathTimeLost)))
f._deathFS:ClearAllPoints()
f._deathFS:SetPoint("TOPLEFT", f, "TOPLEFT", dPad, y - 5)
f._deathFS:SetPoint("TOPRIGHT", f, "TOPRIGHT", -dPad, y - 5)
Expand Down
4 changes: 2 additions & 2 deletions EllesmereUIRaidFrames/EUI_RaidFrames_BuffManager.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4865,7 +4865,7 @@ function ns.BM_BuildPage(pageName, parent, yOffset)
titleFS:SetWordWrap(false)
-- v2: named indicators (the seeded filter groups) show their name.
if ns.BM2_Enabled and ind.name then
titleFS:SetText(ind.name)
titleFS:SetText(EllesmereUI.L(ind.name))
else
titleFS:SetText(EllesmereUI.L(typeName))
end
Expand Down Expand Up @@ -6147,7 +6147,7 @@ function ns.BM_BuildPage(pageName, parent, yOffset)
-- v2: named filter-driven groups head their settings with the group
-- name; spell-driven indicators keep the legacy name list.
if ns.BM2_Enabled and ind.name then
spellsTitle:SetText("(" .. ind.name .. ")")
spellsTitle:SetText("(" .. EllesmereUI.L(ind.name) .. ")")
else
local spellNames = {}
if ind.spells then
Expand Down
2 changes: 1 addition & 1 deletion EllesmereUIRaidFrames/EUI_RaidFrames_ManagerPages.lua
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ local function TileSubtitle(t)
local names = {}
if t.claim then
for _, cat in ipairs(CAT_ORDER) do
if t.claim[cat] then names[#names + 1] = CAT_VALUES[cat] end
if t.claim[cat] then names[#names + 1] = L(CAT_VALUES[cat]) end
end
end
if #names == 0 then return L("No filters routed") end
Expand Down
16 changes: 8 additions & 8 deletions EllesmereUI_FirstInstall.lua
Original file line number Diff line number Diff line change
Expand Up @@ -228,14 +228,14 @@ local function ShowFirstInstallPopup()
eyebrow:SetFont(FONT, 13, "")
eyebrow:SetTextColor(ELLESMERE_GREEN.r, ELLESMERE_GREEN.g, ELLESMERE_GREEN.b, 0.9)
PP.Point(eyebrow, "TOP", popup, "TOP", 0, -104)
eyebrow:SetText("FIRST TIME SETUP")
eyebrow:SetText(EllesmereUI.L("FIRST TIME SETUP"))

-- Title
local title = popup:CreateFontString(nil, "OVERLAY")
title:SetFont(FONT, 25, "")
title:SetTextColor(1, 1, 1, 1)
PP.Point(title, "TOP", eyebrow, "BOTTOM", 0, -6)
title:SetText("Welcome to EllesmereUI")
title:SetText(EllesmereUI.L("Welcome to EllesmereUI"))

-- Subtitle
local sub = popup:CreateFontString(nil, "OVERLAY")
Expand All @@ -245,7 +245,7 @@ local function ShowFirstInstallPopup()
sub:SetWidth(POPUP_W - 60)
sub:SetJustifyH("CENTER")
sub:SetWordWrap(true)
sub:SetText("Choose which addons you want enabled. You can change any of these later in the EllesmereUI settings panel.")
sub:SetText(EllesmereUI.L("Choose which addons you want enabled. You can change any of these later in the EllesmereUI settings panel."))

-- Check All / Uncheck All links
local LINK_Y = -196
Expand All @@ -255,7 +255,7 @@ local function ShowFirstInstallPopup()
checkAllBtn:SetFrameLevel(popup:GetFrameLevel() + 2)
local checkAllLbl = checkAllBtn:CreateFontString(nil, "OVERLAY")
checkAllLbl:SetFont(FONT, 14, "")
checkAllLbl:SetText("Check All")
checkAllLbl:SetText(EllesmereUI.L("Check All"))
checkAllLbl:SetTextColor(1, 1, 1, 0.45)
checkAllLbl:SetPoint("CENTER")
checkAllBtn:SetSize(checkAllLbl:GetStringWidth() + 4, 20)
Expand All @@ -274,7 +274,7 @@ local function ShowFirstInstallPopup()
uncheckAllBtn:SetFrameLevel(popup:GetFrameLevel() + 2)
local uncheckAllLbl = uncheckAllBtn:CreateFontString(nil, "OVERLAY")
uncheckAllLbl:SetFont(FONT, 14, "")
uncheckAllLbl:SetText("Uncheck All")
uncheckAllLbl:SetText(EllesmereUI.L("Uncheck All"))
uncheckAllLbl:SetTextColor(1, 1, 1, 0.45)
uncheckAllLbl:SetPoint("CENTER")
uncheckAllBtn:SetSize(uncheckAllLbl:GetStringWidth() + 4, 20)
Expand All @@ -301,7 +301,7 @@ local function ShowFirstInstallPopup()
hdr:SetFont(FONT, 18, "")
hdr:SetTextColor(ELLESMERE_GREEN.r, ELLESMERE_GREEN.g, ELLESMERE_GREEN.b, 0.9)
PP.Point(hdr, "TOPLEFT", col, "TOPLEFT", 4, -4)
hdr:SetText(group.header)
hdr:SetText(EllesmereUI.L(group.header))

local yOff = HEADER_H + HEADER_PAD

Expand Down Expand Up @@ -330,7 +330,7 @@ local function ShowFirstInstallPopup()
lbl:SetFont(FONT, 17, "")
PP.Point(lbl, "LEFT", box, "RIGHT", 8, 0)
lbl:SetTextColor(1, 1, 1, 0.65)
lbl:SetText(entry.label)
lbl:SetText(EllesmereUI.L(entry.label))

-- Initial state resolution:
-- entry.comingSoon -> disabled, greyed, "Coming soon" tooltip
Expand Down Expand Up @@ -434,7 +434,7 @@ local function ShowFirstInstallPopup()
local function RefreshButtonLabel()
-- Picking addons always ends in a reload so the enable/disable choices
-- take effect, so the button always reads "Reload UI".
doneLbl:SetText("Reload UI")
doneLbl:SetText(EllesmereUI.L("Reload UI"))
end
RefreshButtonLabel()

Expand Down
19 changes: 18 additions & 1 deletion Locales/_keys.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# Auto-generated by .tools/extract-locale-keys.sh -- do not edit by hand.
# Canonical list of translatable English keys passed as string literals
# (649 unique). Regenerate after wrapping new strings. Keys passed as
# (666 unique). Regenerate after wrapping new strings. Keys passed as
# variables are not listed here -- use the in-game /euiloc harvester for
# the complete runtime set.
(Raid)
(guild bank)
%1$d Death -%2$s
%1$d Deaths -%2$s
%1$s (max %2$s)
%1$s Font
%1$s Module
Expand All @@ -15,6 +17,8 @@
%1$s Slot Settings
%1$s Sync
%1$s is not available to import for that resolution yet.
%1$s's %2$s Breakdown
%1$s's Death Recap
%d / %d Items
%d Items
%d junk item(s) could not be sold.
Expand All @@ -28,6 +32,7 @@
(Level %d)
(Middle Click to Add or Remove)
(Percent)
(middle click to remove)
(min)
(minutes)
(no spells)
Expand All @@ -45,6 +50,7 @@
+ Add Spell
+ Add Threshold
A profile named \
ADD NEW
AFK
Abilities
Activate Boss Preview
Expand Down Expand Up @@ -138,6 +144,7 @@ Choose Zones
Choose a buff from the bar menu
Choose which addons to import. Any addons not included will use your active profile's settings in the new profile.
Choose which addons to include in your exported profile. Check everything for a full profile export.
Choose which addons you want enabled. You can change any of these later in the EllesmereUI settings panel.
Choose which specs sync with %1$s, including your alts' specs (the source is always included)
Choose which transforms are removed
Click a bar to edit it
Expand Down Expand Up @@ -190,6 +197,7 @@ Dark Overlays\nEnabled
Deactivate Boss Preview
Deactivate Movement Preview
Deactivate Party Mode
Death Recap
Debuffs on this list never display on the raid frames.
Default
Default Profile (for non-assigned specs)
Expand All @@ -205,6 +213,7 @@ Delete this global group for all specs
Deposit Reagents
Deposit Warbound Items
Deselect All
Detailed information is\nsecret while in combat
Disable
Disabled
Disabled while %1$s is enabled.
Expand Down Expand Up @@ -257,6 +266,7 @@ Export Profile
Export will include %1$s of %2$s addons.
Externals
Extra Spells
FIRST TIME SETUP
Fallback
Fallback Direction
Favorites
Expand Down Expand Up @@ -381,6 +391,7 @@ No
No Bars - Click to Add
No Saved Presets
No buffs assigned. Right click a button in the preview to assign buffs.
No death recap available
No excluded debuffs.
No patch notes yet.
No spec macros for
Expand All @@ -404,6 +415,7 @@ OneBank
OneWarbank
Opacity
Open Great Vault
Overall %1$s
Override Active:
Overrides
Overwrite Existing Settings
Expand Down Expand Up @@ -454,6 +466,7 @@ Recent Items
Regular Import
Reload Now
Reload Required
Reload UI
Remove
Remove Active State
Remove Anchor
Expand Down Expand Up @@ -558,6 +571,7 @@ Talent gating is only available while playing this spec's class
Target
Target Unit
Targeting:
Targets
The pasted string could not be read completely. Please paste it again.
The single stack threshold is off while Multiple Thresholds is on.
Thickness
Expand Down Expand Up @@ -602,6 +616,7 @@ Unknown Macro
Unknown Spell
Unknown error
Unlock Mode
Unlock Mode is where you can adjust\npositioning for all the elements of EllesmereUI
Up to
Update Sync Group
Use Multiple Thresholds
Expand All @@ -612,6 +627,7 @@ W Match
W Matched
WARNING: Frame positions may be off.
Warbank
Welcome to EllesmereUI
What's new in EllesmereUI.
Whistle
Width %
Expand All @@ -626,6 +642,7 @@ Y Offset
Y Position
Yes
You
You may only have %1$d windows active
Your Keystone
Your current spec has an assigned profile so you cannot switch to another. Please unassign to switch.
[ Import string captured (%1$s characters) ]
Expand Down
Loading
Loading