-- 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.F.cYellow local cGray = Grichelde.F.cGray local cHyperlink = Grichelde.F.cHyperlink local cPrefix = Grichelde.F.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 erwartet geduldig Euch weiter unterst\195\188tzen zu d\195\188rfen." L.Upgrade_ToVersion = "Hebe Databank auf Version %s an." L.Upgrade_Successful = "Upgrade erfolgreich." L.Upgrade_Error = "Upgrade fehlgeschlagen!" L.Downgrade_Detected = "Downgrade erkannt, %s kann sich m\195\182glichweise fehlerhaft verhalten!" -- 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_Activated = "Profil %s aktiviert." L.Profiles_Deactivated = "Profil %s deaktiviert." 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!" L.Profiles_AlreadyExistsError = "Das Profil %s existiert bereits!" -- 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_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_MatchWhen_Name = "wann:" L.Options_Mapping_MatchWhen_Desc = "F\195\188hrt die Ersetzung nur durch, wenn der Suchtext |nirgendwo vorkommt (), |nwenn der Suchtext \195\188bereinstimmt, |n, |noder , |noder aber nicht dazwischen, |noder nur in der Wortmitte aber ." L.Options_Mapping_MatchWhen_Select1 = "nie (deaktivert)" L.Options_Mapping_MatchWhen_Select2 = "immer" L.Options_Mapping_MatchWhen_Select3 = "als ganzes Wort" L.Options_Mapping_MatchWhen_Select4 = "nur am Anfang eines Worts" L.Options_Mapping_MatchWhen_Select5 = "nur am Ende eines Worts" L.Options_Mapping_MatchWhen_Select6 = "nur am Anfang oder Ende eines Worts" L.Options_Mapping_MatchWhen_Select7 = "nie am Anfang und Ende eines Worts" 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_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_Info_Name = "Info" L.Options_Help_Tab_Info_Desc = "\195\156ber dieses Addon." 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_Info = cYellow("\195\156ber dieses Addon") .. "|n%s ersetzt beliebige, selbstdefinierte Zeichenfolgen durch andere selbstdefinierte Zeichenfolgen, die ihr eingebt. Die Ersetzung findet vor dem Versenden an andere Spieler oder Kanäle statt. " .. "Es \195\164ndert nicht den Text den andere Spieler im Chat geschrieben haben, nur eure eigenen Eingaben. Es soll den individuellen Sprachfehler eures Charakters simulieren und dadurch die Immersion erh\195\182hen." .. "|n|nNat\195\188rlich kann man es auch f\195\188r andere Dinge zweckentfremden (Trollifizierer, Abk\195\188rzungen, Kosenamen, etc.). Eine ausf\195\188hrliche Beschreibung aller Optionen, der Funktionsweise und viele Beispiele befinden sich auf den nachfolgenden Reitern." .. "|n|n" .. cYellow("Kontakt") .. "|nBitte Fehler und Erfahrungsberichte direkt als Kommentar auf der Projektwebseite bei " .. cPrefix("CurseForge") .. " (" .. cHyperlink("https://www.curseforge.com/wow/addons/grichelde") .. ") einmelden. " .. "Ihr k\195\182nnt auch gern Screenshots der Fehlermeldungen und eurer Zuweisungen anh\195\164ngen. Ein \195\156bersichtsfenster aller Mappings kann mit dem Kommando " .. cPrefix("\"/gri mappings\"") .. " aufgerufen und herauskopiert werden. " .. "|nIch freue mich \195\188ber euere Erfahrungsberichte und Fehlerreports." .. "|n|n" .. cYellow("Dank") .. "|nMein Dank geht an meine lieben Beta-Tester " .. cPrefix("Chamera") .. ", " .. cPrefix("Tabenoca") .. " und " .. cPrefix("Nordraka") .. ", und besondereren Dank an " .. cPrefix("Shinue") .. " f\195\188r die Inspiration und lustigen Momente." 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 wird diese Zuordnung \195\188bersprungen. " .. "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 alle Zuordnungen. " .. "|nMit der Zuordnung " .. cPrefix("\"s\" => \"sch\"") .. " wird aus " .. cPrefix("\"Tasse\" => \"Tasche\"") .. " statt " .. cPrefix("\"Taschsche\"") .. ", " .. "aber aus " .. cPrefix("\"schmeissen\" => \"schchmeischen\"") .. ". Solche Randbedingungen beseitigt in der Regel eine weitere Zuordnung: " .. cPrefix("\"schch\" => \"sch\"") .. "." .. "|n|n" .. cYellow("Anhalten nach Treffer") .. "|nAlle nachfolgenden Ersetzungen mehr \195\188bersprungen, wenn die aktuelle Zuordnung zutreffend ist. Wenn bei der aktuelle Zuordnung kein Treffer vorliegt, werden die restlichen Zuordnung ganz normal weiter abgearbeitet." 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\" => \"Gr\195\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 /g Hallo Leute\"") .. " und alle aktiven Zuordnungen werden ersetzt, selbst wenn der Gildenkanal 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. Generell werden RegEx in den Suchtexten \195\188bernommen, " .. "aber Lua unterst\195\188tzt nicht den vollst\195\163ndigen Umfang von PCRE. Trotzdem funktionieren viele Muster wie Anker bei Zeilenanfang " .. cPrefix("\"^\"") .. " oder Zeilenende " .. cPrefix("\"$\"") .. ", Gruppen " .. cPrefix("\"(Hallo) (Welt)\"") .. "Zeichenklassen wie Zahlen " .. cPrefix("\"%d\"") .. " oder (negierte) Auswahlen " .. cPrefix("\"[^%p]\"") .. ". " .. "Auf Gruppen kann im Ersetzungtext mit % zugegriffen werden" .. cPrefix("\"%2 %1\"") .. "." .. "|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_Examples_Header = cYellow("Beispiel") L.Options_Help_Examples_Text = "Bitte ein Beispiel aus der Auswahlbox ausw\195\164hlen." L.Options_Help_Examples_Import_Name = "Importieren" L.Options_Help_Examples_Import_Desc = "Importiert das ausgew\195\164hlte Beispiel in ein neues Profil %s." L.Options_Help_Examples_Import_ConfirmText = "Wird das Beispiel %s in das neue Profil %s importieren." L.Options_Help_Examples = { { name = "fehlender Unterkiefer", desc = cYellow("S und P werden durch Zisch- und Klacklaute ersetzt."), replacements = { replacement_10 = { order = 10, searchText = "s", replaceText = "ch", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "t", replaceText = "ck", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "p", replaceText = "b", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, } }, { name = "Trollifizierung", desc = cYellow("L\195\164\195\159t euch fast wie Vol'jin klingen."), replacements = { replacement_10 = { order = 10, searchText = "(%w)(%p?)$", replaceText = "%1, maan%2", exactCase = false, consolidate = false, matchWhen = 5, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "ir(r?)", replaceText = "ia", exactCase = false, consolidate = false, matchWhen = 2, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "ch", replaceText = "ck", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_13 = { order = 13, searchText = "g", replaceText = "ch", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_14 = { order = 14, searchText = "qu", replaceText = "kw", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_15 = { order = 15, searchText = "t", replaceText = "d", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_16 = { order = 16, searchText = "er", replaceText = "a", exactCase = false, consolidate = false, matchWhen = 5, stopOnMatch = false, }, } }, { name = "Jar Jar Binks", desc = cYellow("L\195\164\195\159t euch sprechen wie ein ungeschickter Gungan"), replacements = { replacement_10 = { order = 10, searchText = "ver", replaceText = "va", exactCase = false, consolidate = false, matchWhen = 4, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "en", replaceText = "'n", exactCase = false, consolidate = false, matchWhen = 5, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "er", replaceText = "a", exactCase = false, consolidate = false, matchWhen = 5, stopOnMatch = false, }, replacement_13 = { order = 13, searchText = "(%w?)ich", replaceText = "%1ichse", exactCase = false, consolidate = false, matchWhen = 3, stopOnMatch = false, }, replacement_14 = { order = 14, searchText = "(d?m?)ir", replaceText = "%1ichse", exactCase = false, consolidate = false, matchWhen = 3, stopOnMatch = false, }, replacement_15 = { order = 15, searchText = "du", replaceText = "du da", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_16 = { order = 16, searchText = "er", replaceText = "erse", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_17 = { order = 17, searchText = "sie", replaceText = "sie da", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_18 = { order = 18, searchText = "wir", replaceText = "wirse", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_19= { order = 19, searchText = "ihr", replaceText = "ihrse", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_20 = { order = 20, searchText = "nicht", replaceText = "nich", exactCase = false, consolidate = false, matchWhen = 3, stopOnMatch = false, }, replacement_21 = { order = 21, searchText = "die", replaceText = "de", exactCase = false, consolidate = false, matchWhen = 3, stopOnMatch = false, }, } }, { name = "Altmodisch", desc = cYellow("Benutzt eine antiquiertere Schreibweise."), replacements = { replacement_10 = { order = 10, searchText = "ei", replaceText = "ey", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "eu", replaceText = "oy", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "\195\159", replaceText = "sz", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, } }, { name = "Abk\195\188rzungen", desc = cYellow("Viel sagen, wenig tippen."), replacements = { replacement_10 = { order = 10, searchText = "gz", replaceText = "Herzlichen Gl\195\188ckwunsch", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "gn8", replaceText = "Gute Nacht", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "afk", replaceText = "Bin mal kurz weg. (AFK)", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_13 = { order = 13, searchText = "MC", replaceText = "Geschmolzener Kern", exactCase = false, consolidate = true, matchWhen = 3, stopOnMatch = false, }, } }, { name = "Eigen-, Kose- und Ortsnamen", desc = cYellow("Ersetzt Spielernamen, NPCs oder Orte durch andere Ausdr\195\188cke."), replacements = { replacement_10 = { order = 10, searchText = "Sylvanas", replaceText = "die rachs\195\188chtige Bansheek\195\182nigin", exactCase = true, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "R\195\188tzkn\195\188bbel", replaceText = "R\195\188tzi", exactCase = true, consolidate = true, matchWhen = 3, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "Unterstadt", replaceText = "Undercity", exactCase = true, consolidate = true, matchWhen = 3, stopOnMatch = false, }, } }, { name = "Lispeln", desc = cYellow("Aussprache von S und Z wird zu einem Zischlaut"), replacements = { replacement_10 = { order = 10, searchText = "sch", replaceText = "ch", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_11 = { order = 11, searchText = "s", replaceText = "fs", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_12 = { order = 12, searchText = "z", replaceText = "ts", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, replacement_13 = { order = 13, searchText = "chs", replaceText = "x", exactCase = false, consolidate = true, matchWhen = 2, stopOnMatch = false, }, } }, { name = "Stottern", desc = cYellow("Wiederholt Vokale am Satzanfang"), replacements = { replacement_10 = { order = 10, searchText = "^([^aeiouy]-)([aeiouy])", replaceText = "%1%2-%1%2-%1%2", exactCase = false, consolidate = true, matchWhen = 4, stopOnMatch = false, }, } }, } 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"