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/