-- ══════════════════════════════════════════════════════════════
-- MODUL: Locale - Sprachdateien / Language Files
-- Supports: German (deDE), English (enUS), Russian (ruRU)
-- ══════════════════════════════════════════════════════════════

local addonName, addon = ...
local GDL = _G["GuildDeathLog"]
local Locale = {}

local L = {}
Locale.L = L

function Locale:Initialize()
    local fl = GuildDeathLogDB and GuildDeathLogDB.forcedLocale
    local clientLocale = (fl and fl ~= "auto" and fl) or GetLocale()
    
    if clientLocale == "deDE" then
        -- ═══ GERMAN / DEUTSCH ═══
        
        -- Classes
        L.CLASSES = {[1]="Krieger",[2]="Paladin",[3]="Jaeger",[4]="Schurke",[5]="Priester",[7]="Schamane",[8]="Magier",[9]="Hexenmeister",[11]="Druide"}
        
        -- Core
        L.ADDON_TITLE = "Das Buch der Gefallenen"
        L.ADDON_SHORT = "Buch"
        L.NO_GUILD = "Keine Gilde"
        L.NO_GUILD_INFO = "Du bist in keiner Gilde.\nTritt einer Gilde bei."
        L.UNKNOWN = "Unbekannt"
        L.LEVEL = "Level"
        L.OK = "OK"
        L.CANCEL = "Abbrechen"
        L.CLOSE = "Schliessen"
        L.SAVE = "Speichern"
        L.DELETE = "Loeschen"
        L.EDIT = "Bearbeiten"
        L.BACK = "Zurueck"
        L.VERSION = "Version"
        
        -- Statistics
        L.GUILD_DEATHS = "Gefallene Gildenmitglieder"
        L.TOTAL_DEATHS = "%d Gefallene"
        L.AVG_LEVEL = "Avg Level: %.1f"
        L.TODAY = "Heute: %d"
        L.THIS_WEEK = "Woche: %d"
        L.FALLEN = "Gefallene"
        L.FALLEN_TODAY = "Heute"
        L.FALLEN_WEEK = "Diese Woche"
        L.NO_LOSSES = "Keine Verluste!\nDie Gilde steht stark."
        
        -- Buttons (UI)
        L.BTN_REFRESH = "Aktualisieren"
        L.BTN_SETTINGS = "Einstellungen"
        L.BTN_SYNC = "Sync"
        L.BTN_EXPORT = "Export"
        L.BTN_DEBUG = "Debug"
        L.BTN_HALL_OF_FAME = "Ruhmeshalle"
        L.BTN_STATISTICS = "Statistiken"
        L.BTN_MILESTONES = "Meilensteine"
        L.BTN_PROFESSIONS = "Berufe"
        L.BTN_GUILD_MAP = "Gilden-Karte"
        L.BTN_TITLES = "Titel"
        L.BTN_MEMORIAL = "Gedenkhalle"
        L.BTN_GUILD_STATS = "Gilden-Stats"
        L.BTN_RULES = "Regeln"
        L.BTN_CALENDAR = "Kalender"
        L.BTN_LEADER = "Leitung"
        L.BTN_TRACKER = "Tracker"
        L.BTN_KILLS = "Kills"
        L.BTN_BOOK = "Buch"
        
        -- Guild Rules
        L.RULES_TITLE = "Gildenregeln"
        L.RULES_CAN_EDIT = "Du kannst die Regeln bearbeiten"
        L.RULES_CANNOT_EDIT = "Nur Offiziere koennen Regeln bearbeiten"
        L.RULES_UPDATED = "Gildenregeln wurden aktualisiert! Bitte nachlesen."
        L.RULES_SAVED = "Gildenregeln gespeichert und verteilt!"
        L.RULES_REQUESTING = "Regeln werden von Gildenmitgliedern angefragt..."
        L.RULES_ONLY_OFFICERS = "Nur Offiziere koennen die Regeln bearbeiten!"
        L.RULES_CHAT_UPDATED = "[Gildenregeln] Aktualisiert, bitte nachlesen! (/gdl rules)"
        
        -- Settings
        L.SETTING_ANNOUNCE = "Gildenchat-Ankuendigung"
        L.SETTING_SOUND = "Sound abspielen"
        L.SETTING_OVERLAY = "Popup anzeigen"
        L.SETTING_MAP_MARKERS = "Karten-Marker"
        L.SETTING_DEBUG = "Debug-Ausgabe"
        L.SETTING_BLIZZARD_CHANNEL = "Blizzard HC-Channel"
        L.SETTING_ADDON_CHANNEL = "Addon-Sync"
        L.SETTING_GUILD_TRACKER = "Gilden-Tracker"
        
        -- Sync & Status
        L.LIVE = "LIVE"
        L.SYNCED = "SYNC"
        L.SYNC_REQUESTED = "Sync angefordert..."
        L.SYNC_RECEIVED = "Sync: %s (Lvl %d)"
        L.GUILD_CHANGED = "Gilde gewechselt zu: %s"
        L.GUILD_LEFT = "Du hast die Gilde verlassen."
        
        -- Deaths
        L.DEATH_RECEIVED = "%s ist gefallen!"
        L.MAP_DIED = "Gestorben: %s"
        L.KILLED_BY = "Getoetet von"
        L.LAST_WORDS = "Letzte Worte"
        L.ZONE = "Zone"
        L.DATE = "Datum"
        L.TIME = "Zeit"
        
        -- Debug
        L.DEBUG_TITLE = "Debug & Sync Info"
        L.DEBUG_SYNC_STATUS = "Sync Status"
        L.DEBUG_USERS = "Addon-User: %d"
        L.DEBUG_LAST_SYNC = "Letzter Sync: %s"
        L.DEBUG_DEATHLOG = "Deathlog Status"
        L.DEBUG_FOUND = "Gefunden: %s"
        L.DEBUG_ENTRIES = "Eintraege: %d"
        L.DEBUG_GUILD_DEATHS = "Gildentode: %d"
        L.DEBUG_LOG = "Aktivitaets-Log"
        L.DEBUG_CLEAR = "Leeren"
        L.DEBUG_NEVER = "Nie"
        
        -- Hall of Fame
        L.HOF_TITLE = "Ruhmeshalle"
        L.HOF_SUBTITLE = "Die Unsterblichen"
        L.HOF_EMPTY = "Noch keine Level 60 Ueberlebenden"
        L.HOF_REACHED = "erreichte Level 60"
        
        -- Memorial
        L.MEMORIAL_TITLE = "Gedenkhalle"
        L.MEMORIAL_SUBTITLE = "Wir gedenken der Gefallenen"
        L.MEMORIAL_EMPTY = "Keine Gefallenen zum Gedenken"
        L.MEMORIAL_RIP = "Ruhe in Frieden"
        
        -- Milestones
        L.MILESTONES_TITLE = "Meilensteine"
        L.MILESTONES_SUBTITLE = "Ueberlebens-Erfolge"
        L.MILESTONE_UNLOCKED = "Meilenstein erreicht!"
        L.MILESTONE_LEVEL = "Level %d erreicht"
        L.MILESTONE_BOSS = "%s besiegt"
        L.MILESTONE_PROFESSION = "%s Skill %d"
        
        -- Professions
        L.PROFESSIONS_TITLE = "Gilden-Berufe"
        L.PROFESSIONS_SUBTITLE = "Wer kann was?"
        L.PROFESSIONS_EMPTY = "Keine Berufsdaten verfuegbar"
        L.PROFESSIONS_SEARCH = "Suchen..."
        
        -- Titles
        L.TITLES_TITLE = "Titel"
        L.TITLES_CURRENT = "Aktueller Titel:"
        L.TITLES_UNLOCKED = "Titel freigeschaltet"
        L.TITLES_CLICK_SELECT = "Klicken zum Auswaehlen"
        L.TITLES_ACTIVE = "AKTIV"
        L.TITLES_REQUIRED = "Benoetigt:"
        L.TITLES_PRIORITY = "Prioritaet:"
        
        -- Guild Stats
        L.GSTATS_TITLE = "Gilden-Statistiken"
        L.GSTATS_MEMBERS = "Mitglieder"
        L.GSTATS_ONLINE = "Online"
        L.GSTATS_AVG_LEVEL = "Durchschnittslevel"
        L.GSTATS_DEATHS_TODAY = "Tode heute"
        L.GSTATS_DEATHS_WEEK = "Tode diese Woche"
        L.GSTATS_DEATHS_TOTAL = "Tode gesamt"
        
        -- Export
        L.EXPORT_TITLE = "Export"
        L.EXPORT_DISCORD = "Discord Format"
        L.EXPORT_TEXT = "Text Format"
        L.EXPORT_CSV = "CSV Format"
        L.EXPORT_STATS = "Statistiken"
        L.EXPORT_COPY = "Text markieren und Strg+C"
        
        -- Chronicle (main list)
        L.CHRONICLE_HEADER = "- Chronik der Gefallenen -"
        L.CHRONICLE_EMPTY = "Noch keine Gefallenen verzeichnet"
        
        -- Quotes
        L.BOOK_QUOTES = {
            "Ihre Namen sind in Stein gemeisselt.",
            "Moegen ihre Seelen Frieden finden.",
            "In Ehren gefallen.",
            "Vergessen werden sie niemals.",
            "Helden sterben nicht, sie leben in unseren Herzen weiter.",
            "Kein Tod ist umsonst, wenn man sich erinnert.",
            "Das Licht verlosch, doch die Erinnerung brennt ewig.",
            "Sie gaben alles fuer Azeroth.",
            "Jeder Name erzaehlt eine Geschichte.",
            "Der Tod ist nicht das Ende - er ist ein neues Kapitel.",
            "Wer im Herzen seiner Kameraden lebt, ist nicht wirklich tot.",
            "Die Tapfersten fallen zuerst.",
            "Azeroth vergisst seine Verteidiger nicht.",
            "Zwischen den Zeilen dieses Buches weint eine Gilde.",
            "Moege das Licht euch auf eurer letzten Reise begleiten.",
            "Ein Held stirbt nur einmal - ein Feigling tausend Tode.",
            "Die Dunkelheit nahm sie, doch ihr Mut bleibt.",
            "Geschrieben mit Tinte und Traenen.",
            "Fuer die Gilde. Fuer die Ehre. Fuer immer.",
            "Nicht alle Helden tragen Ruestung - manche tragen nur Mut.",
        }
        
        -- Death Messages (simple versions for chat)
        L.DEATH_MESSAGES = {
            "%s (Lvl %d %s) ist gefallen. R.I.P.",
            "Die Gilde trauert um %s - Level %d %s",
        }
        
        -- DangerZone (Supporter Feature)
        L.DZ_TITLE = "GEFAHRENZONE"
        L.DZ_WARNING = "%d Gefallene in dieser Zone!"
        L.DZ_RECENT = "Zuletzt gefallen:"
        L.DZ_SUPPORTER_ONLY = "Gefahrenzonen-Warnung ist ein Supporter-Feature."
        L.DZ_ENABLED = "Gefahrenzonen-Warnung aktiviert"
        L.DZ_DISABLED = "Gefahrenzonen-Warnung deaktiviert"

        -- Memorial-Karte (Grabstein-Karte)
        L.MC_IN_MEMORIAM = "IN MEMORIAM"
        L.MC_LEVEL       = "Stufe"
        L.MC_FELL_IN     = "gefallen in"
        L.MC_BY          = "durch"
        L.MC_CLOCK       = " Uhr"
        L.MC_SELECT_ALL  = "Alles markieren"
        L.MC_SHOT_HINT   = "Tipp: Screenshot landet im WoW\\Screenshots-Ordner"
        L.MC_COPY_TITLE  = "Discord-Text  —  Strg+C zum Kopieren"
        L.MC_NO_DATA     = "Keine Daten fuer die Karte."
        L.MC_NO_DEATHS   = "Noch keine Gefallenen im Buch."
        L.MC_NOT_FOUND   = "Kein Gefallener mit '%s' gefunden."

    elseif clientLocale == "ruRU" then
        -- ═══ RUSSIAN / РУССКИЙ ═══
        
        -- Classes
        L.CLASSES = {[1]="Воин",[2]="Паладин",[3]="Охотник",[4]="Разбойник",[5]="Жрец",[7]="Шаман",[8]="Маг",[9]="Чернокнижник",[11]="Друид"}
        
        -- Core
        L.ADDON_TITLE = "Книга Павших"
        L.ADDON_SHORT = "Книга"
        L.NO_GUILD = "Нет гильдии"
        L.NO_GUILD_INFO = "Вы не в гильдии.\nВступите в гильдию."
        L.UNKNOWN = "Неизвестно"
        L.LEVEL = "Уровень"
        L.OK = "ОК"
        L.CANCEL = "Отмена"
        L.CLOSE = "Закрыть"
        L.SAVE = "Сохранить"
        L.DELETE = "Удалить"
        L.EDIT = "Редактировать"
        L.BACK = "Назад"
        L.VERSION = "Версия"
        
        -- Statistics
        L.GUILD_DEATHS = "Павшие члены гильдии"
        L.TOTAL_DEATHS = "%d Павших"
        L.AVG_LEVEL = "Ср. уровень: %.1f"
        L.TODAY = "Сегодня: %d"
        L.THIS_WEEK = "Неделя: %d"
        L.FALLEN = "Павшие"
        L.FALLEN_TODAY = "Сегодня"
        L.FALLEN_WEEK = "На этой неделе"
        L.NO_LOSSES = "Нет потерь!\nГильдия сильна."
        
        -- Buttons (UI)
        L.BTN_REFRESH = "Обновить"
        L.BTN_SETTINGS = "Настройки"
        L.BTN_SYNC = "Синхр."
        L.BTN_EXPORT = "Экспорт"
        L.BTN_DEBUG = "Отладка"
        L.BTN_HALL_OF_FAME = "Зал славы"
        L.BTN_STATISTICS = "Статистика"
        L.BTN_MILESTONES = "Достижения"
        L.BTN_PROFESSIONS = "Профессии"
        L.BTN_GUILD_MAP = "Карта гильдии"
        L.BTN_TITLES = "Титулы"
        L.BTN_MEMORIAL = "Мемориал"
        L.BTN_GUILD_STATS = "Статистика гильдии"
        L.BTN_RULES = "Правила"
        L.BTN_CALENDAR = "Календарь"
        L.BTN_LEADER = "Руководство"
        L.BTN_BOOK = "Книга"
        
        -- Guild Rules
        L.RULES_TITLE = "Правила гильдии"
        L.RULES_CAN_EDIT = "Вы можете редактировать правила"
        L.RULES_CANNOT_EDIT = "Только офицеры могут редактировать правила"
        L.RULES_UPDATED = "Правила гильдии обновлены! Пожалуйста, прочитайте."
        L.RULES_SAVED = "Правила гильдии сохранены и распространены!"
        L.RULES_REQUESTING = "Запрос правил от членов гильдии..."
        L.RULES_ONLY_OFFICERS = "Только офицеры могут редактировать правила!"
        L.RULES_CHAT_UPDATED = "[Правила гильдии] Обновлены, пожалуйста прочитайте! (/gdl rules)"
        
        -- Settings
        L.SETTING_ANNOUNCE = "Объявление в чате гильдии"
        L.SETTING_SOUND = "Воспроизводить звук"
        L.SETTING_OVERLAY = "Показывать всплывающее окно"
        L.SETTING_MAP_MARKERS = "Маркеры на карте"
        L.SETTING_DEBUG = "Отладочный вывод"
        L.SETTING_BLIZZARD_CHANNEL = "Канал Blizzard HC"
        L.SETTING_ADDON_CHANNEL = "Синхронизация аддона"
        L.SETTING_GUILD_TRACKER = "Трекер гильдии"
        
        -- Sync & Status
        L.LIVE = "LIVE"
        L.SYNCED = "СИНХР"
        L.SYNC_REQUESTED = "Синхронизация запрошена..."
        L.SYNC_RECEIVED = "Синхр: %s (Ур %d)"
        L.GUILD_CHANGED = "Гильдия изменена на: %s"
        L.GUILD_LEFT = "Вы покинули гильдию."
        
        -- Deaths
        L.DEATH_RECEIVED = "%s пал!"
        L.MAP_DIED = "Погиб: %s"
        L.KILLED_BY = "Убит"
        L.LAST_WORDS = "Последние слова"
        L.ZONE = "Зона"
        L.DATE = "Дата"
        L.TIME = "Время"
        
        -- Debug
        L.DEBUG_TITLE = "Отладка и синхронизация"
        L.DEBUG_SYNC_STATUS = "Статус синхронизации"
        L.DEBUG_USERS = "Пользователей аддона: %d"
        L.DEBUG_LAST_SYNC = "Последняя синхр.: %s"
        L.DEBUG_DEATHLOG = "Статус Deathlog"
        L.DEBUG_FOUND = "Найдено: %s"
        L.DEBUG_ENTRIES = "Записей: %d"
        L.DEBUG_GUILD_DEATHS = "Смертей в гильдии: %d"
        L.DEBUG_LOG = "Журнал активности"
        L.DEBUG_CLEAR = "Очистить"
        L.DEBUG_NEVER = "Никогда"
        
        -- Hall of Fame
        L.HOF_TITLE = "Зал славы"
        L.HOF_SUBTITLE = "Бессмертные"
        L.HOF_EMPTY = "Пока нет выживших 60 уровня"
        L.HOF_REACHED = "достиг 60 уровня"
        
        -- Memorial
        L.MEMORIAL_TITLE = "Мемориал"
        L.MEMORIAL_SUBTITLE = "Мы помним павших"
        L.MEMORIAL_EMPTY = "Нет павших для поминовения"
        L.MEMORIAL_RIP = "Покойся с миром"
        
        -- Milestones
        L.MILESTONES_TITLE = "Достижения"
        L.MILESTONES_SUBTITLE = "Успехи выживания"
        L.MILESTONE_UNLOCKED = "Достижение разблокировано!"
        L.MILESTONE_LEVEL = "Достигнут %d уровень"
        L.MILESTONE_BOSS = "%s повержен"
        L.MILESTONE_PROFESSION = "%s Навык %d"
        
        -- Professions
        L.PROFESSIONS_TITLE = "Профессии гильдии"
        L.PROFESSIONS_SUBTITLE = "Кто что умеет?"
        L.PROFESSIONS_EMPTY = "Нет данных о профессиях"
        L.PROFESSIONS_SEARCH = "Поиск..."
        
        -- Titles
        L.TITLES_TITLE = "Титулы"
        L.TITLES_CURRENT = "Текущий титул:"
        L.TITLES_UNLOCKED = "Титул разблокирован"
        L.TITLES_CLICK_SELECT = "Нажмите для выбора"
        L.TITLES_ACTIVE = "АКТИВЕН"
        L.TITLES_REQUIRED = "Требуется:"
        L.TITLES_PRIORITY = "Приоритет:"
        
        -- Guild Stats
        L.GSTATS_TITLE = "Статистика гильдии"
        L.GSTATS_MEMBERS = "Участники"
        L.GSTATS_ONLINE = "Онлайн"
        L.GSTATS_AVG_LEVEL = "Средний уровень"
        L.GSTATS_DEATHS_TODAY = "Смертей сегодня"
        L.GSTATS_DEATHS_WEEK = "Смертей на этой неделе"
        L.GSTATS_DEATHS_TOTAL = "Всего смертей"
        
        -- Export
        L.EXPORT_TITLE = "Экспорт"
        L.EXPORT_DISCORD = "Формат Discord"
        L.EXPORT_TEXT = "Текстовый формат"
        L.EXPORT_CSV = "Формат CSV"
        L.EXPORT_STATS = "Статистика"
        L.EXPORT_COPY = "Выделите текст и Ctrl+C"
        
        -- Chronicle (main list)
        L.CHRONICLE_HEADER = "- Хроника павших -"
        L.CHRONICLE_EMPTY = "Пока нет записей о павших"
        
        -- Quotes
        L.BOOK_QUOTES = {
            "Их имена высечены в камне.",
            "Пусть их души обретут покой.",
            "Пали с честью.",
            "Их никогда не забудут.",
            "Герои не умирают, они живут в наших сердцах.",
        }
        
        -- Death Messages (simple versions for chat)
        L.DEATH_MESSAGES = {
            "%s (Ур %d %s) пал. Покойся с миром.",
            "Гильдия скорбит о %s - Уровень %d %s",
        }
        
        -- DangerZone (Supporter Feature)
        L.DZ_TITLE = "ОПАСНАЯ ЗОНА"
        L.DZ_WARNING = "%d павших в этой зоне!"
        L.DZ_RECENT = "Последние павшие:"
        L.DZ_SUPPORTER_ONLY = "Предупреждение об опасных зонах — функция для Supporter."
        L.DZ_ENABLED = "Предупреждение об опасных зонах включено"
        L.DZ_DISABLED = "Предупреждение об опасных зонах выключено"

        -- Memorial-Karte (Grabstein-Karte)
        L.MC_IN_MEMORIAM = "IN MEMORIAM"
        L.MC_LEVEL       = "Уровень"
        L.MC_FELL_IN     = "пал в"
        L.MC_BY          = "от"
        L.MC_CLOCK       = ""
        L.MC_SELECT_ALL  = "Выделить всё"
        L.MC_SHOT_HINT   = "Скриншот сохраняется в папке WoW\\Screenshots"
        L.MC_COPY_TITLE  = "Текст для Discord  —  Ctrl+C чтобы скопировать"
        L.MC_NO_DATA     = "Нет данных для карточки."
        L.MC_NO_DEATHS   = "Пока нет павших в книге."
        L.MC_NOT_FOUND   = "Павший с именем '%s' не найден."

    else
        -- ═══ ENGLISH (DEFAULT) ═══
        
        -- Classes
        L.CLASSES = {[1]="Warrior",[2]="Paladin",[3]="Hunter",[4]="Rogue",[5]="Priest",[7]="Shaman",[8]="Mage",[9]="Warlock",[11]="Druid"}
        
        -- Core
        L.ADDON_TITLE = "The Book of the Fallen"
        L.ADDON_SHORT = "Book"
        L.NO_GUILD = "No Guild"
        L.NO_GUILD_INFO = "You are not in a guild.\nJoin a guild to track deaths."
        L.UNKNOWN = "Unknown"
        L.LEVEL = "Level"
        L.OK = "OK"
        L.CANCEL = "Cancel"
        L.CLOSE = "Close"
        L.SAVE = "Save"
        L.DELETE = "Delete"
        L.EDIT = "Edit"
        L.BACK = "Back"
        L.VERSION = "Version"
        
        -- Statistics
        L.GUILD_DEATHS = "Fallen Guild Members"
        L.TOTAL_DEATHS = "%d Fallen"
        L.AVG_LEVEL = "Avg Level: %.1f"
        L.TODAY = "Today: %d"
        L.THIS_WEEK = "Week: %d"
        L.FALLEN = "Fallen"
        L.FALLEN_TODAY = "Today"
        L.FALLEN_WEEK = "This Week"
        L.NO_LOSSES = "No losses!\nThe guild stands strong."
        
        -- Buttons (UI)
        L.BTN_REFRESH = "Refresh"
        L.BTN_SETTINGS = "Settings"
        L.BTN_SYNC = "Sync"
        L.BTN_EXPORT = "Export"
        L.BTN_DEBUG = "Debug"
        L.BTN_HALL_OF_FAME = "Hall of Fame"
        L.BTN_STATISTICS = "Statistics"
        L.BTN_MILESTONES = "Milestones"
        L.BTN_PROFESSIONS = "Professions"
        L.BTN_GUILD_MAP = "Guild Map"
        L.BTN_TITLES = "Titles"
        L.BTN_MEMORIAL = "Memorial"
        L.BTN_GUILD_STATS = "Guild Stats"
        L.BTN_RULES = "Rules"
        L.BTN_CALENDAR = "Calendar"
        L.BTN_LEADER = "Leadership"
        L.BTN_BOOK = "Book"
        
        -- Guild Rules
        L.RULES_TITLE = "Guild Rules"
        L.RULES_CAN_EDIT = "You can edit the rules"
        L.RULES_CANNOT_EDIT = "Only officers can edit rules"
        L.RULES_UPDATED = "Guild rules have been updated! Please read."
        L.RULES_SAVED = "Guild rules saved and distributed!"
        L.RULES_REQUESTING = "Requesting rules from guild members..."
        L.RULES_ONLY_OFFICERS = "Only officers can edit the rules!"
        L.RULES_CHAT_UPDATED = "[Guild Rules] Updated, please read! (/gdl rules)"
        
        -- Settings
        L.SETTING_ANNOUNCE = "Guild chat announcement"
        L.SETTING_SOUND = "Play sound"
        L.SETTING_OVERLAY = "Show popup"
        L.SETTING_MAP_MARKERS = "Map markers"
        L.SETTING_DEBUG = "Debug output"
        L.SETTING_BLIZZARD_CHANNEL = "Blizzard HC channel"
        L.SETTING_ADDON_CHANNEL = "Addon sync"
        L.SETTING_GUILD_TRACKER = "Guild tracker"
        
        -- Sync & Status
        L.LIVE = "LIVE"
        L.SYNCED = "SYNC"
        L.SYNC_REQUESTED = "Sync requested..."
        L.SYNC_RECEIVED = "Sync: %s (Lvl %d)"
        L.GUILD_CHANGED = "Guild changed to: %s"
        L.GUILD_LEFT = "You have left the guild."
        
        -- Deaths
        L.DEATH_RECEIVED = "%s has fallen!"
        L.MAP_DIED = "Died: %s"
        L.KILLED_BY = "Killed by"
        L.LAST_WORDS = "Last Words"
        L.ZONE = "Zone"
        L.DATE = "Date"
        L.TIME = "Time"
        
        -- Debug
        L.DEBUG_TITLE = "Debug & Sync Info"
        L.DEBUG_SYNC_STATUS = "Sync Status"
        L.DEBUG_USERS = "Addon users: %d"
        L.DEBUG_LAST_SYNC = "Last sync: %s"
        L.DEBUG_DEATHLOG = "Deathlog Status"
        L.DEBUG_FOUND = "Found: %s"
        L.DEBUG_ENTRIES = "Entries: %d"
        L.DEBUG_GUILD_DEATHS = "Guild deaths: %d"
        L.DEBUG_LOG = "Activity Log"
        L.DEBUG_CLEAR = "Clear"
        L.DEBUG_NEVER = "Never"
        
        -- Hall of Fame
        L.HOF_TITLE = "Hall of Fame"
        L.HOF_SUBTITLE = "The Immortals"
        L.HOF_EMPTY = "No Level 60 survivors yet"
        L.HOF_REACHED = "reached Level 60"
        
        -- Memorial
        L.MEMORIAL_TITLE = "Memorial Hall"
        L.MEMORIAL_SUBTITLE = "We remember the fallen"
        L.MEMORIAL_EMPTY = "No fallen to remember"
        L.MEMORIAL_RIP = "Rest in Peace"
        
        -- Milestones
        L.MILESTONES_TITLE = "Milestones"
        L.MILESTONES_SUBTITLE = "Survival Achievements"
        L.MILESTONE_UNLOCKED = "Milestone achieved!"
        L.MILESTONE_LEVEL = "Reached Level %d"
        L.MILESTONE_BOSS = "Defeated %s"
        L.MILESTONE_PROFESSION = "%s Skill %d"
        
        -- Professions
        L.PROFESSIONS_TITLE = "Guild Professions"
        L.PROFESSIONS_SUBTITLE = "Who can do what?"
        L.PROFESSIONS_EMPTY = "No profession data available"
        L.PROFESSIONS_SEARCH = "Search..."
        
        -- Titles
        L.TITLES_TITLE = "Titles"
        L.TITLES_CURRENT = "Current Title:"
        L.TITLES_UNLOCKED = "titles unlocked"
        L.TITLES_CLICK_SELECT = "Click to select"
        L.TITLES_ACTIVE = "ACTIVE"
        L.TITLES_REQUIRED = "Requires:"
        L.TITLES_PRIORITY = "Priority:"
        
        -- Guild Stats
        L.GSTATS_TITLE = "Guild Statistics"
        L.GSTATS_MEMBERS = "Members"
        L.GSTATS_ONLINE = "Online"
        L.GSTATS_AVG_LEVEL = "Average Level"
        L.GSTATS_DEATHS_TODAY = "Deaths today"
        L.GSTATS_DEATHS_WEEK = "Deaths this week"
        L.GSTATS_DEATHS_TOTAL = "Total deaths"
        
        -- Export
        L.EXPORT_TITLE = "Export"
        L.EXPORT_DISCORD = "Discord Format"
        L.EXPORT_TEXT = "Text Format"
        L.EXPORT_CSV = "CSV Format"
        L.EXPORT_STATS = "Statistics"
        L.EXPORT_COPY = "Select text and Ctrl+C"
        
        -- Chronicle (main list)
        L.CHRONICLE_HEADER = "- Chronicle of the Fallen -"
        L.CHRONICLE_EMPTY = "No fallen recorded yet"
        
        -- Quotes
        L.BOOK_QUOTES = {
            "Their names are carved in stone.",
            "May their souls find peace.",
            "Fallen with honor.",
            "They will never be forgotten.",
            "Heroes don't die, they live on in our hearts.",
            "No death is in vain when someone remembers.",
            "The light faded, but the memory burns eternal.",
            "They gave everything for Azeroth.",
            "Every name tells a story.",
            "Death is not the end - it is a new chapter.",
            "Those who live in the hearts of comrades never truly die.",
            "The bravest fall first.",
            "Azeroth does not forget its defenders.",
            "Between these pages, a guild weeps.",
            "May the Light guide you on your final journey.",
            "A hero dies but once - a coward dies a thousand deaths.",
            "The darkness took them, but their courage remains.",
            "Written in ink and tears.",
            "For the guild. For honor. Forever.",
            "Not all heroes wear armor - some wear only courage.",
        }
        
        -- Death Messages (simple versions for chat)
        L.DEATH_MESSAGES = {
            "%s (Lvl %d %s) has fallen. R.I.P.",
            "The guild mourns %s - Level %d %s",
        }
        
        -- DangerZone (Supporter Feature)
        L.DZ_TITLE = "DANGER ZONE"
        L.DZ_WARNING = "%d fallen in this zone!"
        L.DZ_RECENT = "Recently fallen:"
        L.DZ_SUPPORTER_ONLY = "Danger Zone Alerts is a Supporter feature."
        L.DZ_ENABLED = "Danger Zone Alerts enabled"
        L.DZ_DISABLED = "Danger Zone Alerts disabled"

        -- Memorial Card (tombstone card)
        L.MC_IN_MEMORIAM = "IN MEMORIAM"
        L.MC_LEVEL       = "Level"
        L.MC_FELL_IN     = "fell in"
        L.MC_BY          = "by"
        L.MC_CLOCK       = ""
        L.MC_SELECT_ALL  = "Select all"
        L.MC_SHOT_HINT   = "Tip: screenshot is saved to WoW\\Screenshots"
        L.MC_COPY_TITLE  = "Discord text  —  Ctrl+C to copy"
        L.MC_NO_DATA     = "No data for the card."
        L.MC_NO_DEATHS   = "No fallen heroes recorded yet."
        L.MC_NOT_FOUND   = "No fallen hero matching '%s' found."

    end
end

function GDL:L(key)
    return L[key] or key
end

-- ══ Laufzeit-Uebersetzung hartcodierter DE-Strings -> EN ════════════════════════
-- Deutsche Clients sehen die Quelle (DE). Andere Clients (oder /gdl lang en) sehen
-- EN, sofern im Woerterbuch. Exakter Treffer; Farbcodes/Texturen werden fuer den
-- Lookup abgestreift und danach wieder eingesetzt -> kein Mangling von Namen/Zahlen.
local DE_EN = {
    -- ===== Voll-Sweep: Neben-UI, Tooltips, Command-Ausgaben =====
    -- UIChapters-Reste (Titel/Memorial/LastWords/Supporter/Env)
    ["Noch keine Unsterblichen in der Gilde."]="No immortals in the guild yet.",
    ["Lebt noch"]="Still alive",
    ["Oeffne Kapitel XIV 'Supporter+' um einen Code einzuloesen."]="Open chapter XIV 'Supporter+' to redeem a code.",
    ["Aktuell aktiv"]="Currently active",
    ["<aktiv>"]="<active>",
    ["Aktuell ausgewaehlt"]="Currently selected",
    ["Klicken zum Auswaehlen"]="Click to select",
    ["Noch keine Titel freigeschaltet."]="No titles unlocked yet.",
    ["Noch nicht freigeschaltet"]="Not yet unlocked",
    ["Diese erscheinen im Buch wenn du faellst."]="These appear in the book when you fall.",
    ["Getoetet von:"]="Killed by:",
    ["Faehigkeit:"]="Ability:",
    ["Hier ruhen die Worte, die zurueckblieben."]="Here rest the words that remained.",
    ["Klick zum Aendern oder Loeschen (leer lassen)."]="Click to change or delete (leave empty).",
    ["Hinterlasse eine persoenliche Abschiedsbotschaft."]="Leave a personal farewell message.",
    ["Nicht aktiv"]="Inactive",
    ["Kein Supporter-Code hinterlegt"]="No supporter code set",
    ["Code einloesen"]="Redeem code",
    ["Ungueltiger Code!"]="Invalid code!",
    ["Bitte einen Code eingeben!"]="Please enter a code!",
    ["Fallschaden, Ertrinken, Lava, Feuer ..."]="Fall damage, drowning, lava, fire ...",
    ["Notiz:"]="Note:",
    ["~ Letzte Worte ~"]="~ Last Words ~",
    ["Kondolenz schreiben"]="Write condolence",
    ["Gilden-Karte aktiviert"]="Guild map enabled",
    ["Gilden-Karte deaktiviert"]="Guild map disabled",
    -- Neben-Fenster (DangerZone, DeathBell, LastHours, Memorial, MemorialCard, Overlay, GuildLeader)
    ["Warnung aktiv"]="Warning active",
    ["ist gefallen  -  Level "]="has fallen  -  Level ",
    ["Keine Aufzeichnungen für diese Session verfügbar."]="No records available for this session.",
    ["Die letzten Stunden"]="The Last Hours",
    ["Gefallen am "]="Fallen on ",
    ["%d.%m.%Y um %H:%M Uhr"]="%d.%m.%Y at %H:%M",
    ["Via Deathlog-Addon"]="Via Deathlog addon",
    ["Via Blizzard-Kampflog"]="Via Blizzard combat log",
    ["Klicken fuer Grabstein-Ansicht"]="Click for tombstone view",
    ["(Nur fuer Offiziere sichtbar)"]="(Visible to officers only)",
    ["mit Addon"]="with addon",
    ["Oeffentliche Notiz:"]="Public note:",
    ["Offizier-Notiz:"]="Officer note:",
    ["Gedenkhalle der Gefallenen"]="Memorial Hall of the Fallen",
    ["In Erinnerung an unsere gefallenen Helden"]="In memory of our fallen heroes",
    ["In Erinnerung an "]="In memory of ",
    [" gefallene Helden"]=" fallen heroes",
    ["Unbekannt"]="Unknown",
    ["Buch der Gefallenen"]="Book of the Fallen",
    -- UIGuildStats / GuildCompetition Kategorien
    ["Pkt"]="pts",
    ["Gildenmitglied-Tod"]="Guild member death",
    ["Graue Gegner"]="Grey enemies", ["Normale Gegner"]="Normal enemies",
    ["Elite-Gegner"]="Elite enemies", ["Seltene Gegner"]="Rare enemies",
    ["Seltene Elites"]="Rare elites", ["Dungeon-Bosse"]="Dungeon bosses",
    ["Weltbosse"]="World bosses",
    -- MinimapButton
    ["Gilden-Moral"]="Guild Morale",
    ["Tode verzeichnet"]="deaths recorded",
    ["Noch keine Tode verzeichnet"]="No deaths recorded yet",
    ["Mitglieder"]="members",
    ["Keine Gildendaten verfuegbar"]="No guild data available",
    ["mit Addon online"]="with addon online",
    ["Kein Addon-Nutzer online"]="No addon users online",
    ["Addon-Sync inaktiv"]="Addon sync inactive",
    ["Legendaer"]="Legendary", ["Stark"]="Strong", ["Stabil"]="Stable",
    ["Angespannt"]="Tense", ["Erschoepft"]="Exhausted",
    ["Moral-Score: "]="Morale score: ",
    -- UIToasts (Event)
    ["Unbekanntes Event"]="Unknown event",
    ["Event geloescht"]="Event deleted",
    ["Event geloescht von "]="Event deleted by ",
    ["Neues Gilden-Event erstellt"]="New guild event created",
    ["Neues Gilden-Event von "]="New guild event by ",
    [" Uhr"]="",
    -- UIWindows / GuildStats
    ["Popup-Groesse:"]="Popup size:",
    ["Level-Verteilung (Tode pro Level)"]="Level distribution (deaths per level)",
    ["Kills gesamt"]="kills total",
    ["Tötungen nach Kreaturtyp:"]="Kills by creature type:",
    ["Aktueller Titel:"]="Current title:",
    ["Titel freigeschaltet"]="titles unlocked",
    ["Durchschnittslevel der Gilde"]="Average guild level",
    ["Tode pro Charakter"]="Deaths per character",
    ["Mitglieder gesamt"]="members total",
    ["Keine Tode verzeichnet"]="No deaths recorded",
    ["Tode (Hover fuer Details)"]="Deaths (hover for details)",
    ["Charaktere"]="characters",
    ["Tod"]="death",
    ["Tode verzeichnet:"]="deaths recorded:",
    -- Sync / Report / GuildCompetition / GuildRoster (Command-Ausgaben)
    ["ist gefallen!"]="has fallen!",
    [" wurde durch "]=" was deleted by ",
    [" geloescht."]="",
    ["Fehler:"]="Error:",
    ["Nicht in einer Gilde!"]="Not in a guild!",
    ["Keine Gilde gefunden."]="No guild found.",
    ["═══ WOECHENTLICHER GILDENBERICHT ═══"]="═══ WEEKLY GUILD REPORT ═══",
    ["Gilde:"]="Guild:", ["Zeitraum:"]="Period:", ["Letzte 7 Tage"]="Last 7 days",
    ["Tode diese Woche:"]="Deaths this week:",
    ["Tode diesen Monat:"]="Deaths this month:",
    ["Tode gesamt:"]="Total deaths:",
    ["Todesfalle Nr. 1:"]="Death trap No. 1:",
    ["Klasse "]="Class ",
    ["Gefaehrdetste Klasse:"]="Most endangered class:",
    ["Hoechster Gefallener:"]="Highest fallen:",
    ["gerade eben"]="just now", ["h her"]="h ago",
    ["Letzter Tod:"]="Last death:",
    ["═══ Gilden-Wettbewerb ═══"]="═══ Guild Competition ═══",
    ["Gilde: |cff00FF00%s|r"]="Guild: |cff00FF00%s|r",
    ["Punkte: |cffFFD100%s|r"]="Points: |cffFFD100%s|r",
    ["Rang: |cffFFD100#%d|r von %d bekannten Gilden"]="Rank: |cffFFD100#%d|r of %d known guilds",
    ["Todes-Abzuege: |cffFF4040-%s|r (%d Tode)"]="Death penalties: |cffFF4040-%s|r (%d deaths)",
    ["--- Top Spieler ---"]="--- Top Players ---",
    ["  %d. %s - %s Pkt (%d Kills)"]="  %d. %s - %s pts (%d kills)",
    ["DU"]="YOU",
    ["  #%d %s - %s Pkt%s"]="  #%d %s - %s pts%s",
    ["Bitte einen Charakter-Namen angeben."]="Please specify a character name.",
    ["ist bereits als Alt registriert."]="is already registered as an alt.",
    ["Alt hinzugefuegt:"]="Alt added:", ["Alt entfernt:"]="Alt removed:",
    ["ist nicht als Alt registriert."]="is not registered as an alt.",
    ["Rolle gesetzt:"]="Role set:", ["(keine)"]="(none)",
    ["Notiz gesetzt:"]="Note set:", ["Alle Alts entfernt."]="All alts removed.",
    ["Keine Alts registriert. Benutze /gdl alt add <Name>"]="No alts registered. Use /gdl alt add <name>",
    ["Deine Alts:"]="Your alts:",
    ["– Alt hinzufuegen"]="– Add alt", ["– Alt entfernen"]="– Remove alt",
    ["– Alts anzeigen"]="– List alts", ["– Gildenrolle setzen"]="– Set guild role",
    ["– Persoenliche Notiz setzen"]="– Set personal note",
    ["bekannt"]="known",
    ["Noch keine Roster-Daten – warte auf Broadcast anderer Spieler."]="No roster data yet – waiting for broadcast from other players.",
    ["[Errungenschaften]"]="[Achievements]",
    ["Datenmigration: Fortschritt diesem Charakter zugeordnet."]="Data migration: progress assigned to this character.",
    ["Neuer Charakter erkannt - Fortschritt zurueckgesetzt!"]="New character detected - progress reset!",
    ["Modulare Kombinationen: "]="Modular combinations: ",
    ["Gesamt mögliche Nachrichten: "]="Total possible messages: ",
    ["Fallback-Detektor aktiv (DNL fehlt)"]="Fallback detector active (DNL missing)",
    ["AKTIV (DNL)"]="ACTIVE (DNL)", ["INAKTIV"]="INACTIVE",
    ["Tode diese Session: "]="Deaths this session: ",
    ["aktiv (Gilden-intern)"]="active (guild-internal)",
    ["Gilde Live auf Karte: "]="Guild live on map: ", ["Spieler"]="players",
    ["Prüfe Kill-Meilensteine..."]="Checking kill milestones...",
    ["Meilensteine nachträglich freigeschaltet!"]="milestones unlocked retroactively!",
    ["Alle Meilensteine sind bereits freigeschaltet."]="All milestones already unlocked.",
    ["Top 3 der Gilde:"]="Top 3 of the guild:",
    ["Overlay-Position zurueckgesetzt."]="Overlay position reset.",
    ["Letzte Aktualisierung: vor %ds"]="Last update: %ds ago",
    ["-- Ruhmeshalle der Unsterblichen --"]="-- Hall of Fame of the Immortals --",
    ["Charakter Name:"]="Character name:",
    ["Hinzufügen"]="Add",
    ["zur Ruhmeshalle hinzugefügt!"]="added to the Hall of Fame!",
    ["ist bereits in der Ruhmeshalle!"]="is already in the Hall of Fame!",
    ["— Was ist neu?"]="— What's new?",
    ["Die Reise von Das Buch der Gefallenen — von Anfang bis heute."]="The journey of The Book of the Fallen — from the beginning to today.",
    -- Karten-Kapitel (Death Map / Map of the Fallen, Heatmap, Pins)
    ["Gefahrenzonen und Todesorte auf der Karte"]="Danger zones and death sites on the map",
    ["Heatmap: Wo starben die Gefallenen?"]="Heatmap: where did the fallen die?",
    ["Oeffne die Weltkarte um Todesorte als farbige Cluster-Pins zu sehen. Einzelne Tode sind als Skulls markiert (MapMarkers). Cluster zeigen 2 oder mehr Tode in unmittelbarer Naehe."]="Open the world map to see death sites as colored cluster pins. Individual deaths are marked as skulls (MapMarkers). Clusters show 2 or more deaths in close proximity.",
    ["|cff8A5E14%d|r von |cff8A5E14%d|r Toden haben Koordinaten"]="|cff8A5E14%d|r of |cff8A5E14%d|r deaths have coordinates",
    ["Gefaehrlichste Gebiete:"]="Most dangerous areas:",
    ["%d. |cff2A1606%-22s|r %s%d Tode|r"]="%d. |cff2A1606%-22s|r %s%d deaths|r",
    ["Noch keine Koordinaten-Daten vorhanden."]="No coordinate data yet.",
    ["Heatmap aktivieren"]="Enable heatmap",
    ["Heatmap deaktivieren"]="Disable heatmap",
    ["|cff1A5A24Heatmap AKTIV|r — Oeffne die Weltkarte"]="|cff1A5A24Heatmap ACTIVE|r — open the world map",
    ["|cff5E3E1CHeatmap inaktiv|r"]="|cff5E3E1CHeatmap inactive|r",
    ["Tipp: Koordinaten werden nur mit der DeathNotificationLib (DNL) oder dem eigenen Tod erfasst. Aeltere Eintraege haben keine Koordinaten."]="Tip: coordinates are only captured via DeathNotificationLib (DNL) or your own death. Older entries have no coordinates.",
    ["SurvivalStreak-Modul wird geladen..."]="SurvivalStreak module is loading...",
    -- Heatmap-Legende + Map-Pins
    ["%d Todesorte"]="%d death sites",
    ["|cff00FF00[Heatmap]|r Aktiviert — öffne die Weltkarte."]="|cff00FF00[Heatmap]|r Enabled — open the world map.",
    ["|cffFF4444[Heatmap]|r Deaktiviert."]="|cffFF4444[Heatmap]|r Disabled.",
    ["|cffFF4444[x]|r Todes-Heatmap"]="|cffFF4444[x]|r Death Heatmap",
    ["2–4 Tode (Cluster)"]="2–4 deaths (cluster)",
    ["5–9 Tode"]="5–9 deaths",
    ["10–24 Tode"]="10–24 deaths",
    ["25+ Tode"]="25+ deaths",
    ["Koordinaten: %.1f, %.1f"]="Coordinates: %.1f, %.1f",
    ["Klick für Details"]="Click for details",
    ["Online Gildenmitglied"]="Online guild member",
    -- Todeskarte (Gilden-Roster-Seite)
    ["Gesamt"]="Total",
    ["... und %d weitere"]="... and %d more",
    -- Professions (Berufe-Fenster + Buch-Kapitel)
    ["Gilden-Berufe"]="Guild Professions",
    ["Gildenmitglieder"]="guild members",
    ["- Keine Berufe -"]="- No professions -",
    ["Keine Berufe"]="No professions",
    ["-- Mitglieder mit Berufsdaten --"]="-- Members with profession data --",
    ["-- Ohne Addon / Berufsdaten --"]="-- Without addon / profession data --",
    ["Berufe unbekannt (kein Addon)"]="Professions unknown (no addon)",
    ["mit Berufsdaten"]="with profession data",
    ["ohne Addon"]="without addon",
    -- Profession-Filter-Buttons (Labels; interne Keys bleiben deutsch)
    ["Alle"]="All", ["Schmied"]="Blacksmith", ["Leder"]="Leatherwork",
    ["Schneider"]="Tailor", ["Alchemie"]="Alchemy", ["Ingenieur"]="Engineer",
    ["Verzauber"]="Enchant", ["Bergbau"]="Mining", ["Kräuter"]="Herbalism",
    ["Kürschner"]="Skinning",
    -- Meilenstein-/Erfolg-Zeilen-Tooltip (Bonus-Sweep)
    ["Kategorie: "]="Category: ", ["Erreicht am "]="Achieved on ",
    ["Level bei Freischaltung: "]="Level at unlock: ",
    ["Freigeschaltet"]="Unlocked", ["Noch nicht erreicht"]="Not yet achieved",
    -- Meilenstein-Kategorien (CAT_NAMES)
    ["Ueberleben"]="Survival", ["Meisterschaft"]="Mastery", ["Beruf"]="Profession",
    ["Reichtum"]="Wealth", ["Soziales"]="Social", ["Geheimnis"]="Secret",
    -- Navigation / Index
    ["Gedenkhalle"]="Memorial Hall", ["Kondolenzenbuch"]="Book of Condolences",
    ["Todeskarte"]="Death Map", ["Karte der Gefallenen"]="Map of the Fallen",
    ["Ruhmeshalle"]="Hall of Fame", ["Die Ausdauernden"]="The Enduring",
    ["Meilensteine"]="Milestones", ["Errungenschaften"]="Achievements",
    ["Abenteurer der Gilde"]="Guild Adventurers", ["Titel & Raenge"]="Titles & Ranks",
    ["Kalender"]="Calendar", ["Schwarzes Brett"]="Bulletin Board",
    ["Gilden-Regeln"]="Guild Rules", ["Statistiken"]="Statistics",
    ["Gilden-Statistiken"]="Guild Statistics", ["Gilden-Wettbewerb"]="Guild Competition",
    -- Kategorien
    ["Tode & Gedaechtnis"]="Death & Remembrance", ["Ruhm & Fortschritt"]="Glory & Progress",
    ["Gilde & Gemeinschaft"]="Guild & Community", ["Auswertungen & Wettbewerb"]="Analytics & Competition",
    -- Kapitel-Kopfzeilen (CHAPTER_TITLES)
    ["Statistiken des Todes"]="Death Statistics", ["Meilensteine & Erfolge"]="Milestones & Achievements",
    ["Berufe der Gilde"]="Guild Professions", ["Gilden-Kalender"]="Guild Calendar",
    ["Chronik der Gefallenen"]="Chronicle of the Fallen", ["Kapitel"]="Chapter",
    -- Todes-Overlay
    ["Stufe "]="Level ", ["Getötet von"]="Killed by", ["Eintrag loeschen"]="Delete entry",
    ["Admin-Passwort eingeben:"]="Enter admin password:", ["loeschen?"]="delete?",
    -- Statistik-Seite (statische Header laufen ueber den MakeBookLine-Hook)
    ["-- Gefaehrlichste Zonen --"]="-- Most Dangerous Zones --",
    ["-- Level-Verteilung der Tode --"]="-- Death Level Distribution --",
    ["-- Todes-Uhrzeiten --"]="-- Times of Death --",
    ["-- Haeufigste Todesursachen --"]="-- Most Common Causes of Death --",
    ["Gesamte Tode:"]="Total deaths:", ["Durchschnittslevel:"]="Average level:",
    ["Anteil:"]="Share:", ["Gefahrenstufe:"]="Danger level:", ["in dieser Zone"]="in this zone",
    ["Tode"]="deaths", ["von"]="of", ["gesamt"]="total", ["aller Tode"]="of all deaths",
    -- Klassennamen (abweichend)
    ["Krieger"]="Warrior", ["Jaeger"]="Hunter", ["Schurke"]="Rogue", ["Priester"]="Priest",
    ["Todesritter"]="Death Knight", ["Schamane"]="Shaman", ["Magier"]="Mage",
    ["Hexenmeister"]="Warlock", ["Druide"]="Druid",
    -- Gedenkhalle
    ["Keine Gefallenen verzeichnet. Die Gilde steht stark."]="No fallen recorded. The guild stands strong.",
    ["Gefallene:"]="Fallen:", ["Heute:"]="Today:", ["Diese Woche:"]="This week:",
    ["fiel in"]="fell in", ["Ruhe in Frieden."]="Rest in peace.",
    -- Gilden-Statistiken (statisch, via MakeBookLine-Hook)
    ["Gilden-Wettbewerb nicht verfuegbar."]="Guild competition unavailable.",
    ["Gilden-Rangliste"]="Guild Leaderboard", ["Unsere Kaempfer"]="Our Fighters",
    ["Deine Jagdstatistik"]="Your Hunt Stats",
    ["Toete Gegner um Punkte zu sammeln!"]="Kill enemies to earn points!",
    ["Punktewerte"]="Point Values",
    -- Restkapitel (Titel, Berufe, Regeln, Kalender, Kondolenzen, Supporter)
    ["Noch keine Unsterblichen in der Gilde."]="No immortals in the guild yet.",
    [" der Unsterblichen"]=" of the Immortals", ["Rang: "]="Rank: ", ["Rang: #"]="Rank: #",
    ["Berufe"]="Professions", ["Soziales & Gilde"]="Social & Guild",
    ["-- Mitglieder mit Berufsdaten --"]="-- Members with Profession Data --",
    ["Keine Berufe"]="No professions", ["Berufe unbekannt (kein Addon)"]="Professions unknown (no addon)",
    [" mit Berufsdaten  |  "]=" with profession data  |  ", ["... und "]="... and ",
    [" gesamt"]=" total", [" gesamt  "]=" total  ",
    ["Aktiver Titel: "]="Active title: ", ["Kein Titel ausgewaehlt"]="No title selected",
    ["Freigeschaltete Titel"]="Unlocked Titles", ["Noch keine Titel freigeschaltet."]="No titles unlocked yet.",
    ["Gesperrte Titel"]="Locked Titles", ["Heute"]="Today",
    ["Nachruf fuer "]="Obituary for ", ["Nachruf bearbeiten"]="Edit obituary",
    [" löschen"]=" delete", ["Klicken zum Löschen"]="Click to delete", ["Löschen"]="Delete",
    ["Erfordert Admin-Passwort"]="Requires admin password",
    ["Getoetet von:  "]="Killed by:  ", ["Nachruf:"]="Obituary:",
    ["Hier ruhen die Worte, die zurueckblieben."]="Here rest the words that remained.",
    ["Keine Gefallenen verzeichnet."]="No fallen recorded.",
    [" Tode)"]=" deaths)", ["Erster Eintrag"]="First entry", ["Letzter Eintrag"]="Last entry",
    ["-- Tode pro Charakter ("]="-- Deaths per Character (", ["Tode: "]="Deaths: ",
    ["Persönliche Errungenschaften"]="Personal Achievements", ["Zusammen gekämpft"]="Fought Together",
    ["Stärke der Gilde"]="Guild Strength",
    ["Dieses Addon ist und bleibt kostenlos."]="This addon is and remains free.",
    ["Eigene Titel auf Nameplates & Tooltips"]="Custom titles on nameplates & tooltips",
    ["Exklusive Rahmen in der Ruhmeshalle"]="Exclusive frames in the Hall of Fame",
    ["Gold-Rang im Gilden-Power-Level"]="Gold rank in the Guild Power Level",
    ["Discord-ID (aus der Bot-DM):"]="Discord ID (from the bot DM):", ["Supporter-Code:"]="Supporter code:",
    ["Keine Gilden-Regeln festgelegt."]="No guild rules set.", ["Regeln bearbeiten"]="Edit rules",
    ["Gilden-Regeln eingeben:"]="Enter guild rules:", ["Keine Events geplant."]="No events scheduled.",
    ["Top-Killer der Gilde ("]="Top killers of the guild (", [" Tode gesamt):"]=" deaths total):",
    [" weitere Gegner"]=" more enemies", [" schreiben:"]=":", ["Toedlichster Tag"]="Deadliest day", [" am "]=" on ",
    ["Als freiwillige Unterstuetzung kannst du ueber Patreon einen Monatsbeitrag leisten. Als Dank schaltest du rein kosmetische Extras frei:"]="As voluntary support, you can contribute monthly via Patreon. As thanks, you unlock purely cosmetic extras:",
    -- Beschreibungen / Untertitel / Eingaben / Punkte (Batch 7)
    ["Charakter Level"]="Character Level", ["Online:"]="Online:", [" Gesamt"]=" Total",
    [" Online  |  "]=" Online  |  ", [" online / "]=" online / ", [" online  "]=" online  ",
    [" Mitglieder"]=" members", [" von "]=" of ", ["Unbekannte Gilde"]="Unknown Guild",
    ["Punkte"]="Points", ["PUNKTE"]="POINTS", [" Punkte"]=" points",
    [" gefallene Mitglieder  =  -"]=" fallen members  =  -",
    ["Kondolenz fuer "]="Condolence for ",
    ["ist ein kosmetisches Extra fuer Supporter+.\nKein Gameplay-Vorteil - rein optisch."]="is a cosmetic extra for Supporter+.\nNo gameplay advantage - purely visual.",
    ["Lege deine letzten Worte fest"]="Set your last words",
    ["Deine letzten Worte festlegen\n(Erscheinen im Buch wenn du stirbst):"]="Set your last words\n(Shown in the book when you die):",
    ["Klicke um den Link in den Chat zu kopieren"]="Click to copy the link to chat",
    ["Vielen Dank fuer deine Unterstuetzung!"]="Thank you for your support!",
    ["Schreibe eine Ankuendigung fuer die Gilde."]="Write an announcement for the guild.",
    ["Das Brett ist leer. Sei der Erste."]="The board is empty. Be the first.",
    ["Ankuendigungen, Hinweise und Notizen fuer die Gilde"]="Announcements, hints and notes for the guild",
    -- Buchtitel / Zitate / rechte Kopfzeile
    ["Das Buch der Gefallenen"]="The Book of the Fallen",
    ["Chronik der Gefallenen"]="Chronicle of the Fallen",
    ["Wer in den Herzen seiner Gilde lebt, ist nicht tot."]="Those who live in the hearts of their guild are never truly dead.",
    ["Ein Leben. Ein Versuch. Eine Legende."]="One life. One attempt. One legend.",
    -- Kapitel-Beschreibungen (Index-Tooltip desc)
    ["Alle Gefallenen – Gedenkstaette und Totenbuch"]="All the fallen – memorial and book of the dead",
    ["Abschiedsbotschaften fuer die Gefallenen"]="Farewell messages for the fallen",
    ["Gefahrenzonen und Todesorte auf der Karte"]="Danger zones and death sites on the map",
    ["Heatmap: Wo starben die Gefallenen?"]="Heatmap: where did the fallen die?",
    ["Ueberlebende Helden der Gilde"]="Surviving heroes of the guild",
    ["Ueberlebens-Streaks der Gildenmitglieder"]="Survival streaks of the guild members",
    ["Errungene Meilensteine und Fortschritt"]="Earned milestones and progress",
    ["Gilden- und Charakter-Errungenschaften"]="Guild and character achievements",
    ["Mitglieder-Profile, Berufe, Rassen"]="Member profiles, professions, races",
    ["Gildentitel und Rang-System"]="Guild titles and rank system",
    ["Bevorstehende Gilden-Ereignisse"]="Upcoming guild events",
    ["Gilden-Pinnwand: Ankuendigungen und Notizen"]="Guild pinboard: announcements and notes",
    ["Regeln und Verhaltenskodex"]="Rules and code of conduct",
    ["Klassen- und Zonen-Auswertungen der Tode"]="Class and zone breakdowns of deaths",
    ["Aktivitaet und Wachstum der Gilde"]="Guild activity and growth",
    ["Punktesystem, Leaderboard & Monsterjagd"]="Point system, leaderboard & monster hunt",
    -- Dialoge / Buttons / Editoren (Batch 8)
    ["Speichern"]="Save", ["Abbrechen"]="Cancel", ["Anpinnen"]="Pin",
    ["Schliessen"]="Close", ["Das Buch schliessen"]="Close the book",
    ["Kondolenz bearbeiten"]="Edit condolence",
    ["Klick zum Aendern oder Loeschen (leer lassen)."]="Click to edit or delete (leave empty).",
    ["Bitte einen Code eingeben!"]="Please enter a code!",
    ["Event loeschen"]="Delete event", ["+ Neues Event"]="+ New event",
    ["+ Neuen Beitrag anpinnen"]="+ Pin new post", ["Beitrag anpinnen"]="Pin post",
    ["Beitrag ans Schwarze Brett pinnen\n(max. 180 Zeichen):"]="Pin a post to the bulletin board\n(max. 180 characters):",
    [" aus dem Buch loeschen?\nDies wird an Gildenmitglieder synchronisiert."]=" remove from the book?\nThis will be synced to guild members.",
    ["Rang "]="Rank ", ["Deine Jagdstatistik"]="Your Hunt Stats",
    -- Streak-Kapitel + Hall of Fame (Batch 9)
    ["Meine Ueberlebensdauer"]="My Survival Time", ["Aktuell"]="Current", ["Bester"]="Best",
    ["Charakter"]="Character", ["Rekord"]="Record", ["Noch keine Daten vorhanden."]="No data yet.",
    ["Die Ausdauernden der Gilde"]="The Enduring of the Guild",
    ["Letzter Tod: vor %s  —  %s (%s)"]="Last death: %s ago  —  %s (%s)",
    ["Unsterbliche:"]="Immortals:", ["Krieger des Lichts"]="Knights of the Light",
    -- ── Achievements (Modul Achievements.lua) ──────────────────────────────────
    ["[Gilden-Errungenschaft] "]="[Guild Achievement] ",
    ["[Gilden-Errungenschaft]"]="[Guild Achievement]", ["[Errungenschaft]"]="[Achievement]",
    ["Geschichte & Schicksal"]="History & Fate", ["Power-Level:"]="Power Level:",
    ["Erster Zeuge"]="First Witness", ["Erster Tod eines Gildenmitglieds miterlebt"]="Witnessed the first death of a guild member",
    ["Chronist des Todes"]="Chronicler of Death", ["10 Tode im Buch verzeichnet"]="10 deaths recorded in the book",
    ["Meister der Trauer"]="Master of Mourning", ["50 Tode im Buch verzeichnet"]="50 deaths recorded in the book",
    ["Zäh wie Leder"]="Tough as Leather", ["Level 10 erreicht ohne zu sterben"]="Reached level 10 without dying",
    ["Hartgesotten"]="Hard-Boiled", ["Level 20 erreicht ohne zu sterben"]="Reached level 20 without dying",
    ["Veteran"]="Veteran", ["Level 40 erreicht ohne zu sterben"]="Reached level 40 without dying",
    ["Unsterblich"]="Immortal", ["Level 60 erreicht ohne zu sterben!"]="Reached level 60 without dying!",
    ["Wahrer Unsterblicher"]="True Immortal", ["Level 70 erreicht ohne zu sterben! (TBC)"]="Reached level 70 without dying! (TBC)",
    ["Lebensmüde"]="Death Wish", ["Eine Zone mit 5+ Toden betreten"]="Entered a zone with 5+ deaths",
    ["Nachruf-Schreiber"]="Obituary Writer", ["Einen eigenen Nachruf verfasst"]="Wrote your own obituary",
    ["Letzte Worte"]="Last Words", ["Eigene letzte Worte festgelegt"]="Set your own last words",
    ["Gilden-Trupp"]="Guild Squad", ["Dungeon mit 3+ Gildenmitgliedern betreten"]="Entered a dungeon with 3+ guild members",
    ["Kameraden"]="Comrades", ["10 Dungeons als Gilden-Trupp absolviert"]="Completed 10 dungeons as a guild squad",
    ["Gilden-Schlachtzug"]="Guild Raid", ["Raid mit 10+ Gildenmitgliedern betreten"]="Entered a raid with 10+ guild members",
    ["Fünf von Uns"]="Five of Us", ["Voll belegtes Dungeon mit Gilden-Party (5/5)"]="Full dungeon with a guild party (5/5)",
    ["Wir kämpfen weiter"]="We Fight On", ["Drei simultane Gildentode – und weitergemacht"]="Three simultaneous guild deaths - and carried on",
    ["Sieben Tage Stille"]="Seven Days of Silence", ["7 Tage kein einziger Gildentod"]="7 days without a single guild death",
    ["Eiserne Ordnung"]="Iron Order", ["30 Tage kein einziger Gildentod"]="30 days without a single guild death",
    ["Vollbeschäftigt"]="Fully Staffed", ["10+ Gildenmitglieder gleichzeitig online"]="10+ guild members online at once",
    ["Grosse Koalition"]="Grand Coalition", ["50+ Mitglieder in der Gilde"]="50+ members in the guild",
    ["Gilden-Veteranen"]="Guild Veterans", ["5 Mitglieder auf Maximallevel"]="5 members at max level",
    ["Alte Garde"]="Old Guard", ["Gilde loggt seit 30+ Tagen aktiv"]="Guild active for 30+ days",
    ["Jahrhundertchronik"]="Century Chronicle", ["100 Gildentode dokumentiert"]="100 guild deaths documented",
    ["Alle Klassen"]="All Classes", ["Alle Klassen in der Gilde vertreten"]="All classes represented in the guild",
    ["Schwarzer Tag"]="Black Day", ["3+ Gildenmitglieder starben am selben Tag"]="3+ guild members died on the same day",
}
Locale.DE_EN = DE_EN

function GDL:CurrentLang()
    local f = GuildDeathLogDB and GuildDeathLogDB.forcedLocale
    if f and f ~= "auto" then return f end
    return GetLocale()
end

function GDL:WantEnglish()
    return GDL:CurrentLang() ~= "deDE"
end

local function _stripCodes(s)
    s = s:gsub("|c%x%x%x%x%x%x%x%x", "")
    s = s:gsub("|r", "")
    s = s:gsub("|T.-|t", "")
    return s
end

-- Uebersetzt einen (ggf. farbcodierten) DE-String nach EN. Unbekannt -> unveraendert.
function GDL:T(s)
    if type(s) ~= "string" or s == "" or not GDL:WantEnglish() then return s end
    local hit = DE_EN[s]
    if hit then return hit end
    local plain = _stripCodes(s)
    local tp = DE_EN[plain]
    if tp and plain ~= "" then
        local i = s:find(plain, 1, true)
        if i then return s:sub(1, i - 1) .. tp .. s:sub(i + #plain) end
        return tp
    end
    return s
end

function GDL:GetClassName(classId)
    return L.CLASSES and L.CLASSES[classId] or L.UNKNOWN or "Unknown"
end

-- Register
GDL:RegisterModule("Locale", Locale)
