-- read namespace from global env local AddonName, _ = ... local _G = _G local Grichelde = _G.Grichelde local L = LibStub('AceLocale-3.0'):NewLocale(AddonName, 'deDE') if not L then return end local cYellow = Grichelde.functions.cYellow local cGray = Grichelde.functions.cGray local cPrefix = Grichelde.functions.cPrefix -- system messages L.AddonName = "Grichelde" L.AddonNamePlusVersion = "%s v%s" L.AddonLoaded = "%s unterst\195\188tzt Euch jetzt bei euren Sprachschwierigkeiten." L.AddonUnloaded = "%s wartet geduldig Euch weiter unterst\195\188tzen zu d\195\188rfen." L.Upgrade_ToVersion = "Hebe Databank auf Version %s an." L.Upgrade_Successful = "Upgrade erfolgreich." -- debug L.Debug_Options = "Optionen" L.Debug_Mappings = "Ersetzungen" L.Debug_Mappings_Hint = "Der Inhalt der Textbox dient nur zur Fehlersuche und kann herauskopiert werden. Es werden keine Werte aus dieser Textbox eingelesen oder anderweitig verwertet." L.Debug_Mappings_Found = "%d Ersetzungen gefunden" L.Debug_Profile = "Profil" -- errors L.Error_InvalidCommand = "Ung\195\188ltiger Befehl" L.Error_InvalidChannel = "Ung\195\188ltiger Kanal" L.Error_InvalidWhisperTarget = "Ung\195\188ltiger Fl\195\188sterziel" L.Error_UnsupportedChannel = "Nicht unterst\195\188tzter Kanal" -- profiles L.Profiles_Available = "Verf\195\188gbare Profile:" L.Profiles_Created = "Neues Profil %s angelegt." L.Profiles_Loaded = "Profil %s geladen." L.Profiles_Refreshed = "Profil %s aktualisiert." L.Profiles_Deleted = "Profil %s gel\195\182scht." L.Profiles_Copied = "Einstellungen von Profil %s \195\188bernommen." L.Profiles_Reset = "Profil %s zur\195\188ckgesetzt." L.Profiles_Invalid = "Ung\195\188ltiges Profil %s!" L.Profiles_DeleteError = "Das aktive Profil kann nicht gel\195\182scht werden!" -- minimap L.Minimap_Tooltip_Enabled = "%s" L.Minimap_Tooltip_Disabled = "%s " .. cGray("(inaktiv)") L.Minimap_Tooltip_Options_Left = "Linksklick" L.Minimap_Tooltip_Options_Right = "\195\150ffnet oder schlie\195\159t die Einstellungen." L.Minimap_Tooltip_Mappings_Left = "Rechtsklick" L.Minimap_Tooltip_Mappings_Right = "Aktiviert oder Deaktivert jegliche Ersetzungen." -- options L.Options_Title = "%s Einstellungen" L.Options_Enabled_Name = "Aktiv" L.Options_Enabled_Desc = "Aktiviert %s" L.Options_Minimap_Button_Name = "Zeige Minimap-Knopf" L.Options_Minimap_Button_Desc = "Zeigt oder versteckt den Knopf an der Miniaturkarte" L.Options_Channels_Group_Name = "Kan\195\164le" L.Options_Channels_Group_Desc = "%s ist in folgenden Kan\195\164len aktiv." L.Options_Channels_Header = "Eine Ersetzung wird nur in den unten markierten Kan\195\164len durchgef\195\188hrt:" L.Options_Channel_Say_Name = "Sagen" L.Options_Channel_Say_Desc = "Aktiviert %s im Kanal \"Sagen\"." L.Options_Channel_Emote_Name = "Emote" L.Options_Channel_Emote_Desc = "Aktiviert %s im Kanal \"Emote\"." L.Options_Channel_Yell_Name = "Schreien" L.Options_Channel_Yell_Desc = "Aktiviert %s im Kanal \"Schreien\"." L.Options_Channel_Party_Name = "Gruppe" L.Options_Channel_Party_Desc = "Aktiviert %s im Kanal \"Gruppe\"." L.Options_Channel_PartyLeader_Name = "Gruppenanf\195\188hrer" L.Options_Channel_PartyLeader_Desc = "Aktiviert %s im Kanal \"Gruppenanf\195\188hrer\"." L.Options_Channel_Guild_Name = "Gilde" L.Options_Channel_Guild_Desc = "Aktiviert %s im Kanal \"Gilde\"." L.Options_Channel_Officer_Name = "Offiziere" L.Options_Channel_Officer_Desc = "Aktiviert %s im Kanal \"Offiziere\"." L.Options_Channel_Raid_Name = "Schlachtzug" L.Options_Channel_Raid_Desc = "Aktiviert %s im Kanal \"Schlachtzug\"." L.Options_Channel_RaidLeader_Name = "Schlachtzugsanf\195\188hrer" L.Options_Channel_RaidLeader_Desc = "Aktiviert %s im Kanal \"Schlachtzugsanf\195\188hrer\"." L.Options_Channel_RaidWarning_Name = "Schlachtzugswarnung" L.Options_Channel_RaidWarning_Desc = "Aktiviert %s im Kanal \"Schlachtzugswarnung." L.Options_Channel_Instance_Name = "Instanz" L.Options_Channel_Instance_Desc = "Aktiviert %s im Kanal \"Instanz\"." L.Options_Channel_Battleground_Name = "Schlachtfeld" L.Options_Channel_Battleground_Desc = "Aktiviert %s im Kanal \"Schlachtfeld\"." L.Options_Channel_Whisper_Name = "Fl\195\188stern" L.Options_Channel_Whisper_Desc = "Aktiviert %s im Kanal \"Fl\195\188stern\"." L.Options_Replacements_Group_Name = "Ersetzungen" L.Options_Replacements_Group_Desc = "Diese Vorkommen werden in den aktivierten Kan\195\164len ersetzt." L.Options_Replacements_Add_Name = "Hinzu" L.Options_Replacements_Add_Desc = "F\195\188gt eine neue Zuordnung hinzu." L.Options_Replacements_DeleteAll_Name = "Alle L\195\182schen" L.Options_Replacements_DeleteAll_Desc = "L\195\182scht alle Zuweisungen." L.Options_Replacements_DeleteAll_ConfirmText="Wirklich ALLE Zuweisungen l\195\182schen?" L.Options_Replacements_Header = "Die Vorkommen links vom Pfeil \"=>\" werden in den aktivierten Kan\195\164len gesucht und durch den Text rechts vom Pfeil ersetzt." L.Options_Mapping_Group_Name = "%s => %s" L.Options_Mapping_Group_Desc = "Dieses Vorkommen wird in den aktivierten Kan\195\164len ersetzt." L.Options_Mapping_EmptyMapping = "(keine)" L.Options_Mapping_Enabled_Name = "Aktiv" L.Options_Mapping_Enabled_Desc = "Diese Ersetzung wird durchgef\195\188hrt" L.Options_Mapping_SearchText_Name = "Suchtext:" L.Options_Mapping_SearchText_Desc = "Dieser Text wird in der Chateingabe gesucht." L.Options_Mapping_ReplaceText_Name = "Ersetzung:" L.Options_Mapping_ReplaceText_Desc = "Jeder Suchtreffer wird mit diesem Text ersetzt." L.Options_Mapping_ExactCase_Name = "Exakte Gro\195\159- und Kleinschreibung" L.Options_Mapping_ExactCase_Desc = "Wenn gesetzt, muss die Gro\195\159- und Kleinschreibung des Suchtextes exakt \195\188berein stimmen. Anderfalls wird die Gro\195\159schreibung jedes Zeichens bei der Ersetzung \195\188bernommen." L.Options_Mapping_Consolidate_Name = "Zusammenfassen aufeinanderfolgender Treffer" L.Options_Mapping_Consolidate_Desc = "Wenn durch die Ersetzung die Zeichenfolge mehrfach hintereinander steht,|nfasse sie zu einem Vorkommen zusammen." L.Options_Mapping_StopOnMatch_Name = "Anhalten nach Treffer" L.Options_Mapping_StopOnMatch_Desc = "F\195\188hrt keine nachfolgenden Ersetzungen mehr durch, wenn dieser Eintrag ein Suchtreffer war." L.Options_Mapping_MoveUp_Name = "^" L.Options_Mapping_MoveUp_Desc = "nach oben verschieben" L.Options_Mapping_MoveDown_Name = "v" L.Options_Mapping_MoveDown_Desc = "nach unten verschieben" L.Options_Mapping_Delete_Name = "L\195\182schen" L.Options_Mapping_Delete_Desc = "L\195\182scht diese Zuweisung." L.Options_Mapping_Delete_ConfirmText="Diese Zuweisung l\195\182schen?" L.Options_Help_Group_Name = "Hilfe" L.Options_Help_Group_Desc = "Hilfstellungen zu den Suchmustern und zur Ersetzungslogik." L.Options_Help_Disclaimer = cYellow("Haftungsausschlu\195\159:") .. " Das Addon wird im reinen Ist-Zustand zur Verf\195\188gung gestellt, ohne Garantie auf Funktion und Fehlerfreiheit (f\195\188r mehr Details siehe GPL 3 Lizenzdokument). " .. "Ferner \195\188bernimmt der Autor keinerlei Haftung oder Gew\195\164hrleistung f\195\188r durch das Addon oder dessen Nutzung entstandene Fehler oder Sch\195\164den, " .. "insb. den Verlust von Spielfortschritt oder Daten aufgrund von Abst\195\188rzen des WoW-Clients." L.Options_Help_Tab_Basics_Name = "Grundlagen" L.Options_Help_Tab_Basics_Desc = "Erl\195\164utert die Grundlagen des Addons" L.Options_Help_Tab_Expert_Name = "Experte" L.Options_Help_Tab_Expert_Desc = "Beleuchtet die Besonderheiten bei der Textsuche." L.Options_Help_Tab_Examples_Name = "Beispiele" L.Options_Help_Tab_Examples_Desc = "Beispiele f\195\188r bestimmte Szenarien." L.Options_Help_Basics = cYellow("Reihenfolge") .. "|nEs sind unbegrenzt viele Textersetzung m\195\182glich, und sie werden in der Reihenfolge der definierten Zuordnungen abgearbeitet, von oben nach unten. " .. "Ersetzungen sind transitiv, d.h. nachfolgende Zuordnungen beziehen sich nicht auf den Originaltext, sondern das Resultat der vorherigen Ersetzung. " .. "|nMit der Zuordnung " .. cPrefix("\"a\" => \"b\"") .. " und " .. cPrefix("\"b\" => \"c\"") .. " wird bei Eingabe von " .. cPrefix("\"a\" => \"c\"") .. "." .. "|n|n" .. cYellow("Exakte Gro\195\159- und Kleinschreibung") .. "|nBei exakter Gro\195\159- und Kleinschreibung muss die Schreibweise genau \195\188berstimmen, sonst findet keine Textersetzug f\195\188r diese Zuordnung statt. " .. "Wird die Gro\195\159- und Kleinschreibung ignoriert, wird die Gro\195\159schreibung jedes Zeichens bei der Ersetzung \195\188bernommen. " .. "|nMit der Zuordnung " .. cPrefix("\"aBcDeF\" => \"uvWXYz\"") .. " wird aus " .. cPrefix("\"abcdef\" => \"uvwxyz\"") .. ", " .."aus " .. cPrefix("\"ABCDEF\" => \"UVWXYZ\"") .. " und aus " .. cPrefix("\"AbCdEf\" => \"UvWxYz\"") .. "." .. "|n|n" .. cYellow("Zusammenfassen aufeinanderfolgender Treffer") .. "|nDas Zusammenfassen aufeinanderfolgender Treffer vermeidet unsch\195\182ne Wiederholungen, die durch die Ersetzung entstehen k\195\182nnen. " .. "Die Zusammenfassung wird erst nach der Ersetzung vorgenommen, d.h. am vollst\195\164ndig ersetzten Text f\195\188r jede Zuordnung. " .. "|nMit der Zuordnung " .. cPrefix("\"s\" => \"sch\"") .. " wird aus " .. cPrefix("\"Tasse\" => \"Tasche\"") .. " statt " .. cPrefix("\"Taschsche\"") .. ", " .. "aber " .. cPrefix("\"schmeissen\" => \"schchmeischen\"") .. ". Solche Randbedingungen beseitigt in der Regel eine weitere Zuordnung wie " .. cPrefix("\"chch\" => \"ch\"") .. "." L.Options_Help_Expert = cYellow("verk\195\188rzende/verl\195\163ngernde Ersetzungen") .. "|nIst der Ersetzungstext k\195\188rzer als der eigentliche Suchtext, werden die \195\188bersch\195\188\195\159igen Zeichen des Suchtreffers entfernt. " .. "Ist der Ersetzungstext l\195\163nger, werden die \195\188brigen Zeichen nach dem Treffer hinten drangehangen. Dabei wird die Gro\195\159- und Kleinschreibung des letzten Zeichens ber\195\188cksichtigt, " .. "ebenso wie die Gro\195\159- und Kleinschreibung des nachfolgenden Zeichens. Gro\195\159geschriebene Abk\195\188rzungen und Ausdr\195\188cke bleiben so einheitlich. " .. "|nMit der Zuordnung " .. cPrefix("\"Kr\195\164uter\" => \"Gr\195\188nzeugs\"") .. " wird aus " .. cPrefix("\"KR\195\132UTER\" => \"GR\195\156NZEUGS\"") .. " statt " .. cPrefix("\"GR\195\156NZEUgs\"") .. " " .. "unter Beibehaltung von absichtlicher Gro\195\159schreibung wie " .. cPrefix("\"Kr\195\132utERGarten\" => \"Gr195\156nzEUGSgarten\"") .. " statt " .. cPrefix("\"Gr\195\188nzeugsGarten\"") .. "." .. "|n|n" .. cYellow("Standby") .. "|nErsetzungen k\195\182nnen auch nur bei Bedarf durchgef\195\188hrt werden, selbst wenn das Addon oder ein Kanal deaktivert wurde. " .. "Vor der Eingabe in der Chatbox schreibt man " .. cPrefix("/gri").. " oder " .. cPrefix("/grichelde").. " und optional noch den Zielkanal " .. "z.B. " .. cPrefix("\"/gri /p hallo da dr\195\188ben\"") .. " und alle aktiven Zuordnungen werden ersetzt, selbst wenn der Gruppenkanal oder das Addon nicht aktiv sind." .. "|n|n" .. cYellow("Regul\195\164re Ausdr\195\188cke") .. "|nRegEx sind sehr m\195\163chtige Such- und Ersetzunsgmuster die h\195\163ufig in der Programmierung verwendet werden. Technisch gesehen benutzt das Addon f\195\188r die Suchen des Eingabetextes bereits regul\195\163ren Ausdr\195\188cke. " .. "Das Eingeben von RegEx als Suchtext ist allerings eine inoffizielle Funktion und hat zwei gro\195\159e Einschr\195\163nkungen: " .. "|n1. Leider unterst\195\188tzt Lua nicht den vollst\195\163ndigen Umfang von PCRE. Trotzdem k\195\182nnen einige Muster verwendet werden wie Zeilenanfang " .. cPrefix("\"^\"") .. " " .."oder Zeilenende " .. cPrefix("\"$\"") .. ", Zeichenklassen wie Zahlen " .. cPrefix("\"%d\"") .. " oder (negierte) Auswahlen " .. cPrefix("\"[^%p]\"") .. ". " .. "|n2. Es werden keine Gruppen im Ersetzungstest unterst\195\188tzt, so da\195\159 Gruppen einfach verloren gehen. Wegen der Gro\195\159- und Kleinschreibung und steigender Komplexit\195\163t ist diese Funktion auch f\195\188r die Zukunft nicht geplant. " .. "|nIm Beispiel-Reiter gibt es einige Ersetzungen, welche mit regul\195\164ren Ausdr\195\188cke umgesetzt wurden." L.Options_Help_Examples_Note = cYellow("Hinweis:") .. " Dieses Addon bef\195\188rwortet nicht und beabsichtig nicht Personen mit (Fremd-)Sprachproblemen |nzu verletztem oder herabzuw\195\188rdigen. Die Verantwortung f\195\188r den Einsatz des Addons obliegt dem Benutzer. |nBitte verwendet die Funktion respektvoll und zur\195\188ckhaltend gegen\195\188ber anderen Mitspielern." L.Options_Help_Examples0_Header = cYellow("Beispiel") L.Options_Help_Examples0_Text = "Bitte ein Beispiel aus der Auswahlbox ausw\195\164hlen." L.Options_Help_Examples1_Select = "fehlender Unterkiefer" L.Options_Help_Examples1_Header = cYellow("S und P werden durch Zisch- und Klacklaute ersetzt.") L.Options_Help_Examples1_Text = cPrefix("s => ch") .. "|n|n" .. cPrefix("t => ck") L.Options_Help_Examples2_Select = "Trollifizierung" L.Options_Help_Examples2_Header = cYellow("L\195\164\195\159t euch fast wie ein echter Troll klingen.") L.Options_Help_Examples2_Text = cPrefix("%.$ => , maan.") .. "|n|n" .. cPrefix("ir => ia") .. "|n|n" .. cPrefix("ch => ck") .. "|n|n" .. cPrefix("g => ch") .. "|n|n" .. cPrefix("qu => kw") .. "|n|n" .. cPrefix("t => d") L.Options_Help_Examples3_Select = "Altmodisch" L.Options_Help_Examples3_Header = cYellow("Benutzt eine antiquiertere Schreibweise.") L.Options_Help_Examples3_Text = cPrefix("ei => ey") .. "|n|n" .. cPrefix("\195\159 => sz") L.Options_Help_Examples4_Select = "Abk\195\188rzungen" L.Options_Help_Examples4_Header = cYellow("Viel sagen, wenig tippen.") L.Options_Help_Examples4_Text = cPrefix("gz => Herzlichen Gl\195\188ckwunsch") .. "|n|n" .. cPrefix("gn8 => Gute Nacht") .. "|n|n" .. cPrefix("afk => Bin mal eben weg (AFK)") .. "|n|n" .. cPrefix("MC => Geschmolzener Kern") L.Options_Help_Examples5_Select = "Eigennamen" L.Options_Help_Examples5_Header = cYellow("Ersetzt Spielernamen, NPCs oder Orte durch andere Ausdr\195\188cke.") L.Options_Help_Examples5_Text = cPrefix("Sylvanas => die rachs\195\188chtige Bansheek\195\182nigin") .. "|n|n" .. cPrefix("R\195\188tzkn\195\188bbel => R\195\188tzi") .. "|n|n" .. cPrefix("Unterstadt => Undercity") L.Options_Help_Examples6_Select = "Lispeln" L.Options_Help_Examples6_Header = cYellow("Aussprache von S und Z wird zu einem Zischlaut") L.Options_Help_Examples6_Text = cPrefix("sch => ch") .. "|n|n" .. cPrefix("s => fs") .. "|n|n" .. cPrefix("z => ts") .. "|n|n" .. cPrefix("chs => x") L.Options_Help_Examples7_Select = "Stottern" L.Options_Help_Examples7_Header = cYellow("Stottern") L.Options_Help_Examples7_Text = "p[%s]-$" L.IgnorePattern_Star = "Stern" L.IgnorePattern_Circle = "Kreis" L.IgnorePattern_Diamond = "Diamant" L.IgnorePattern_Triangle = "Dreieck" L.IgnorePattern_Moon = "Mond" L.IgnorePattern_Square = "Quadrat" L.IgnorePattern_Cross = "Kreuz" L.IgnorePattern_Skull = "Totenkopf"