From 22ca116bb0cff71b90eb54139797c658859ca9e2 Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Mon, 21 Jun 2021 14:46:27 +0300 Subject: [PATCH] Fix to improve post-translation formatting --- bin/language-manager | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/bin/language-manager b/bin/language-manager index 52e3d0326..149634cc1 100755 --- a/bin/language-manager +++ b/bin/language-manager @@ -642,6 +642,12 @@ sub translate_substitute $value =~ s///gm; $value =~ s/(?:(^(?"$1"<\/span>/g; + + # Wrap $1, $2 and etc into a tag with translate=no attr skipping already wrapped + $value =~ s/(?$1<\/span>/g; + + # Never translate email addresses, as translations to some languages break it + $value =~ s/([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,63})/$1<\/span>/g; } return $value; @@ -729,6 +735,8 @@ sub translated_substitute $translated =~ s/'/'/gi; $translated =~ s///gm; + + $translated =~ s/(.*?)<\/span>/$1/gm; } # Restore destroyed tags @@ -812,6 +820,17 @@ sub translated_substitute $translated =~ s/\.\.\. /.../g; } + # If original ends with `..` fix translator changing it to `.` + if ($original =~ /\.\.\s*$/) { + my ($spaces) = $original =~ /(\s*)\.\.\s*$/; + $translated =~ s/\s*[.]+$/$spaces../; + } + + # If original doesn't end with `.` fix translator adding a dot + if ($original !~ /\.$/ && $translated =~ /\.$/) { + $translated =~ s/[.]+$//; + } + # If original value on template file contained escaped HTML entities, do the same on translated string if ($original =~ /<|>/ && $original !~ /<|>/ && $translated =~ /<|>/) { $translated =~ s/