Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Neuen Unicode-Modus des Mutteraddons unterstützen #38

Closed
gharlan opened this issue Apr 29, 2021 · 4 comments · Fixed by #39
Closed

Neuen Unicode-Modus des Mutteraddons unterstützen #38

gharlan opened this issue Apr 29, 2021 · 4 comments · Fixed by #39

Comments

@gharlan
Copy link
Member

gharlan commented Apr 29, 2021

YRewrite hat inzwischen einen eigenen Unicode-Modus, der auch Sprachen mit anderen Schriften (kyrillisch etc.) unterstützt.
Dieser Modus belässt auch die deutschen Umlaute wie sie sind (also "ä" wird nicht "ae").
Der Modus arbeitet mit einem recht speziellen Regex und noch ein paar speziellen Ersetzungen: https://github.com/yakamara/redaxo_yrewrite/blob/72564f4e33a68154aff424194c11f66b3bda2a28/lib/yrewrite/scheme.php#L131-L134

Der Modus lässt sich in den allgemeinen YRewrite-Einstellungen aktivieren.
Jedoch wenn man yrewrite_scheme installiert hat, lässt sich der Modus nicht 100% so nutzen.
Denn yrewrite_scheme ersetzt grundsätzlich erstmal viele der Umlaute:

$replaced_string = str_replace(
['À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ', '/', '®', '©', '™', ':', '#', '$', '%', '&', '(', ')', '*', '+', ',', '.', '/', '!', ';', '<', '=', '>', '?', '@', '[', ']', '^', '_', '`', '{', '}', '~', '–', '’', '¿', '”', '“', ' '],
['A', 'A', 'A', 'A', 'Ae', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'Oe', 'Oe', 'U', 'U', 'U', 'Ue', 'Y', 'ss', 'a', 'a', 'a', 'a', 'ae', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'oe', 'oe', 'u', 'u', 'u', 'ue', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'Oe', 'oe', '-', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '-'],
strip_tags(trim(mb_strtolower($string)))
);

Ich fände es schön, wenn man trotz yrewrite_scheme, den neuen Unicode-Modus 1:1 wie im Mutteraddon nutzen könnte, ohne diese zusätzlichen Zeichenersetzungen.
Ich bin mir aber unsicher, wie man das nun am besten hier integriert, da dieses Addon ja vorher schon, sprachspezifisch, einen eigenen Unicode-Modus hatte.
Dieser Modus ersetzt aber eben einerseits trotzdem viele Umlaute.
Und andererseits ersetzt er einige Sonderzeichen nicht, die der yrewrite-unicode-modus hingegen ersetzt (per diesem speziellen regex, siehe oben), wenn ich das richtig sehe.
Beispiele siehe PR: yakamara/redaxo_yrewrite#360
Ich glaube, dass der Unicode-Modus aus diesem Addon zum Beispiel die Emojis, und auch "&" etc. so in der URL lassen würde, was bei manchen Zeichen problematisch sein kann.

Also letztlich würde ich mir also eine Variante wünschen, wo dieses Addon einfach nur per parent::normalize an die Elternklasse weiterreicht, ganz ohne eigene Anpassungen.

@skerbis
Copy link
Member

skerbis commented Sep 30, 2021

Aus meiner Sicht kann es ganz weg. Um nicht alle Urls mit einem Update zu zerstören, schlage ich vor, es als Auswahl bereitzustellen.

@tyrant88
Copy link
Member

Klingt vernünftig.

@tyrant88
Copy link
Member

wenn du @skerbis es nicht machst, mache ich es im Hacktober...

@skerbis
Copy link
Member

skerbis commented Sep 30, 2021

Klar gerne , wenn du möchtest

tyrant88 added a commit that referenced this issue Oct 1, 2021
skerbis pushed a commit that referenced this issue Oct 2, 2021
…ohne weitere Ersetzungen. fixes #38 (#39)

Alles Gute 🍀 Danke
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants