local L = setmetatable(TargetMarkerAssistantL or {}, { __index = function(t, k)
    local v = tostring(k)
    rawset(t, k, v)
    return v
end })
TargetMarkerAssistantL = L

-- English fallback
L["ADDON_TITLE"] = "Target Marker Assistant"
L["SETTINGS_INTRO_TITLE"] = "Overview"
L["SETTINGS_INTRO_DESC"] = "Target Marker Assistant helps set mouseover focus and raid markers quickly, with marker announcements, interrupt alerts, and interrupt announcements."
L["SETTINGS_SHORTCUT_TITLE"] = "Quick Commands"
L["SETTINGS_SHORTCUT_VALUE"] = "/tma, /mb"
L["SETTINGS_VERSION_TITLE"] = "Version"
L["SETTINGS_VERSION_FORMAT"] = "Current version: %s"
L["SETTINGS_AUTHOR_TITLE"] = "Author"
L["SETTINGS_AUTHOR_VALUE"] = "草东-白银之手-WoWChina"
L["SETTINGS_AUTHOR_HOMEPAGE_TITLE"] = "Homepage"
L["SETTINGS_AUTHOR_HOMEPAGE_VALUE"] = "https://www.gaicas.com"
L["SETTINGS_FEEDBACK_TITLE"] = "Feedback"
L["SETTINGS_FEEDBACK_VALUE"] = "me@gaicas.com"
L["SETTINGS_OPEN_PANEL"] = "Open Configuration"
L["CLEAR_FOCUS_DESC"] = "Enable clearing focus when clicking empty space"
L["ENABLE_MARKING_DESC"] = "Set focus target marker:"
L["ENABLE_ANNOUNCE_DESC"] = "Announce after marker is set"
L["ANNOUNCE_MESSAGE"] = "Announce Text"
L["ANNOUNCE_CHANNEL"] = "Announce Channel"
L["ANNOUNCE_DEFAULT_MESSAGE"] = "I will interrupt"
L["MINIMAP_TOOLTIP_LEFT"] = "Left click: Marker Settings"
L["MINIMAP_TOOLTIP_RIGHT"] = "Right click: Interrupt Announce"
L["SECTION_MARKER"] = "Marker"
L["SECTION_ANNOUNCE"] = "Announce"
L["SECTION_HOTKEY"] = "Hotkeys"
L["SECTION_CAST_REMINDER"] = "Interrupt Alert"
L["SECTION_ALERT_SOUND"] = "Reminder Sound"
L["SECTION_INTERRUPT_DETECT"] = "Interrupt Announcement"
L["SECTION_INTERRUPT_MONITOR"] = "Interrupt Spell Monitor"
L["SECTION_INTERRUPT_COOLDOWN_READY"] = "Cooldown Ready Alert"
L["SECTION_INTERRUPT_CHAT"] = "Announcement Settings"
L["TARGET_MARKER_FIELD"] = "Target Marker"
L["TAB_MARKER_HOTKEY"] = "Marker Settings"
L["TAB_INTERRUPT_ALERT"] = "Interrupt Alert"
L["TAB_COMBAT_REPORT"] = "Interrupt Announce"
L["ENABLE_INTERRUPT_ANNOUNCE_DESC"] = "Enable announcement"
L["INTERRUPT_SPELL_MODE"] = "Interrupt Spell"
L["INTERRUPT_MODE_AUTO"] = "Auto"
L["INTERRUPT_MODE_MANUAL"] = "Manual Input"
L["INTERRUPT_CURRENT_SPELL_LABEL"] = "Current Monitored Spell"
L["INTERRUPT_SPELL_CARD_EMPTY"] = "Interrupt spell not detected"
L["INTERRUPT_SPELL_ID_FORMAT"] = "spellID: %s"
L["INTERRUPT_SPELL_CARD_DESCRIPTION_EMPTY"] = "No spell description available."
L["INTERRUPT_SPELL_CARD_COOLDOWN_FORMAT"] = "%ss cooldown"
L["INTERRUPT_SPELL_CARD_COOLDOWN_EMPTY"] = "Cooldown: -"
L["INTERRUPT_MANUAL_SPELL_ID"] = "Enter Spell Name"
L["APPLY"] = "Apply"
L["INVALID_SPELL_ID"] = "Invalid spell ID"
L["ENABLE_CAST_ALERT_DESC"] = "Play sound when focus target starts casting"
L["ENABLE_TARGET_CAST_ALERT_DESC"] = "Play sound when current target starts casting"
L["CAST_ALERT_SOUND"] = "Alert Sound"
L["CAST_ALERT_CHANNEL"] = "Playback Channel"
L["TEST_SOUND"] = "Test"
L["SOUND_CHANNEL_MASTER"] = "Master"
L["SOUND_CHANNEL_SFX"] = "Sound Effects"
L["SOUND_CHANNEL_MUSIC"] = "Music"
L["SOUND_CHANNEL_AMBIENCE"] = "Ambience"
L["SOUND_CHANNEL_DIALOG"] = "Dialog"
L["SOUND_COLD_MATURE_MALE"] = "Standard Male"
L["SOUND_SYNTHETIC_ADULT_FEMALE"] = "Standard Female"
L["SOUND_ARTHAS"] = "Arthas"
L["SOUND_BRANN_BRONZEBEARD"] = "Brann Bronzebeard"
L["SOUND_ILLIDAN"] = "Illidan"
L["SOUND_SYLVANAS"] = "Sylvanas"
L["SOUND_XALATATH"] = "Xal'atath"
L["SOUND_ANDUIN"] = "Anduin"
L["SOUND_MILLHOUSE"] = "Millhouse"
L["SOUND_MURLOC"] = "Murloc"
L["SOUND_FUNK"] = "Funk"
L["SOUND_GLASS"] = "Glass"
L["SOUND_PING"] = "Ping"
L["SOUND_SUBMARINE"] = "Submarine"
L["INTERRUPT_SPELL"] = "interrupt"
L["INTERRUPT_CHAT_TEMPLATE_DEFAULT"] = "{player} used [{interrupt}]. Next interrupt in {cooldown} sec."
L["INTERRUPT_CHAT_TEMPLATE"] = "Announce Text"
L["INTERRUPT_CHAT_TEMPLATE_HELP"] = "Variables: {player} player using the interrupt, {interrupt} interrupt spell, {cooldown} remaining cooldown."
L["INTERRUPT_ADDON_SYNC_ENABLE"] = "Sync teammate interrupt info"
L["INTERRUPT_COOLDOWN_READY_ENABLE"] = "Interrupt spell cooldown alert"
L["INTERRUPT_COOLDOWN_READY_ALERT"] = "Ready"
L["INTERRUPT_COOLDOWN_READY_PREVIEW"] = "Preview"
L["INTERRUPT_COOLDOWN_READY_SUFFIX"] = "ready"
L["INTERRUPT_CHAT_PREVIEW_PREFIX"] = ""
L["INTERRUPT_CHAT_PREVIEW"] = ""
L["INTERRUPT_RESCAN"] = "Rescan"
L["INTERRUPT_FOCUS_MACRO_TOOLTIP"] = "Drag to an action bar to create or update a focus interrupt macro using the current monitored spell."
L["INTERRUPT_FOCUS_MACRO_NO_SPELL"] = "No available interrupt spell is currently monitored."
L["INTERRUPT_FOCUS_MACRO_COMBAT_LOCKED"] = "Macros cannot be created or updated in combat. The macro will update after combat ends."
L["INTERRUPT_FOCUS_MACRO_FULL"] = "Your character macro slots are full. The focus interrupt macro could not be created."
L["INTERRUPT_FOCUS_MACRO_CREATE_FAILED"] = "Could not create the focus interrupt macro."
L["INTERRUPT_FOCUS_MACRO_UPDATE_FAILED"] = "Could not update the focus interrupt macro."
L["INTERRUPT_FOCUS_MACRO_PICKUP_FAILED"] = "Could not pick up the focus interrupt macro."
L["INTERRUPT_FOCUS_MACRO_UNAVAILABLE"] = "This client does not support macro creation."
L["INTERRUPT_FOCUS_MACRO_READY"] = "Focus interrupt macro created. Drop it onto an action bar."
L["INTERRUPT_DANMAKU_SECTION"] = "Danmaku Settings"
L["INTERRUPT_DANMAKU_SCROLL_AREA"] = "Scroll Area"
L["INTERRUPT_DANMAKU_SCROLL_START_EDGE"] = "Screen Edge"
L["INTERRUPT_DANMAKU_SCROLL_START_PERCENT_FORMAT"] = "%d%% Position"
L["INTERRUPT_DANMAKU_FONT_SIZE"] = "Font Size"
L["INTERRUPT_DANMAKU_SPEED"] = "Speed"
L["INTERRUPT_DANMAKU_LIFETIME"] = "Duration"
L["INTERRUPT_DANMAKU_MAX"] = "Max Count"
L["INTERRUPT_DANMAKU_SOUND_ENABLE"] = "Danmaku Sound"
L["INTERRUPT_DANMAKU_SOUND"] = "Sound"
L["INTERRUPT_DANMAKU_PREVIEW"] = "Preview"
L["INTERRUPT_DANMAKU_PREVIEW_DISABLED"] = "[TMA] Enable \"Enable announcement\" first."
L["INTERRUPT_DANMAKU_PREVIEW_TOOLTIP"] = "Shows a scrolling test notice with the current danmaku settings. It does not send chat or affect real interrupt announcements."
L["DESC_CLEAR_FOCUS"] = "Clicking empty space in the game world clears the current focus target."
L["DESC_MARK_TARGET"] = "When using the hotkey, set the selected raid marker on the focus target."
L["DESC_HOTKEY"] = "Hold the function key and click a target to set focus and marker."
L["DESC_MARK_ANNOUNCE"] = "After setting a target marker, send a short notice to the selected channel."
L["DESC_MARK_ANNOUNCE_CHANNEL_FALLBACK"] = "If channel permission is insufficient, the system will automatically switch to an available lower-priority channel."
L["DESC_CAST_ALERT"] = "When the focus target starts casting, play an alert sound."
L["DESC_CAST_ALERT_NOTE"] = "This only indicates the target is casting. It does not mean the spell is interruptible."
L["DESC_TARGET_CAST_ALERT"] = "Only applies when no focus target is set. Focus casting remains the priority."
L["DESC_CAST_CHANNEL"] = "Playback channel affects volume controls such as Master, Sound Effects, and Dialog."
L["DESC_INTERRUPT_ANNOUNCE"] = "When you use an interrupt spell, automatically show a scrolling notice."
L["DESC_INTERRUPT_ANNOUNCE_GROUP_ONLY"] = "Interrupt announcements only work while grouped and will not trigger while solo."
L["DESC_INTERRUPT_ANNOUNCE_API_LIMIT"] = "Due to Blizzard addon API restrictions, after a Mythic+ run starts, team-wide announcements are unavailable."
L["DESC_INTERRUPT_MODE"] = "Auto detection is recommended. The addon detects the interrupt spell to monitor from your current class specialization."
L["DESC_INTERRUPT_MANUAL"] = "Enter the spell name or spell ID (spellID) to monitor."
L["DESC_INTERRUPT_DANMAKU_SOUND"] = "When a danmaku announcement appears, play a prompt sound to draw attention to key interrupt results."
L["DESC_INTERRUPT_COOLDOWN_READY"] = "When the monitored interrupt spell's cooldown ends, show a \"Ready\" alert near the top of the screen so you can interrupt again in time."
L["DESC_INTERRUPT_COOLDOWN_READY_LOCAL_ONLY"] = "This alert is local only. It is not synced to teammates and is not sent to chat."
L["DESC_INTERRUPT_ADDON_SYNC"] = "When teammates install this addon, you can see their interrupt actions that entered cooldown as local scrolling notices."
L["DESC_INTERRUPT_ADDON_SYNC_HINT"] = "Synced information is sent only through scrolling notices and is not repeated in chat channels."
L["DESC_INTERRUPT_FOCUS_MACRO"] = "|cfff2b852Drag|r the skill above to an action bar to quickly use |cfff2b852focus interrupt|r."
L["DESC_INTERRUPT_FOCUS_MACRO_HINT"] = "Interrupt logic: prioritize the focus target; if no focus exists, interrupt the current target. Hold |cff71d5ffAlt|r while casting to force interrupt the current target."
L["UNKNOWN_SPELL"] = "spell"
L["UNKNOWN_INTERRUPTED_SPELL"] = "unknown spell"
L["UNKNOWN_PLAYER"] = "Teammate"
L["CHANNEL_SAY"] = "Say"
L["CHANNEL_YELL"] = "Yell"
L["CHANNEL_PARTY"] = "Party"
L["CHANNEL_RAID"] = "Raid"
L["CHANNEL_INSTANCE_CHAT"] = "Instance"
L["CHANNEL_RAID_WARNING"] = "Raid Warning"
L["MODIFIER_KEY"] = "Function Key"
L["MOUSE_BUTTON"] = "Mouse Button"
L["RESET_DEFAULTS"] = "Defaults"
L["LEFT_BUTTON"] = "Mouse Left"
L["RIGHT_BUTTON"] = "Mouse Right"
L["MIDDLE_BUTTON"] = "Mouse Middle"
L["BUTTON_4"] = "Mouse Side 4"
L["BUTTON_5"] = "Mouse Side 5"
L["ERROR_LABEL"] = "Error"
L["OPEN_PANEL_COMBAT_LOCKED"] = "Settings cannot be opened in combat. Try again after combat ends."
L["CHAT_LOCKDOWN_SEND_BLOCKED"] = "Chat is currently restricted. Not sent automatically: %s"

L["MARKER_0"] = "None"
L["MARKER_1"] = "Star"
L["MARKER_2"] = "Circle"
L["MARKER_3"] = "Diamond"
L["MARKER_4"] = "Triangle"
L["MARKER_5"] = "Moon"
L["MARKER_6"] = "Square"
L["MARKER_7"] = "Cross"
L["MARKER_8"] = "Skull"
