Fix to improve post-translation formatting

This commit is contained in:
Ilia Rostovtsev
2021-06-21 14:46:27 +03:00
parent 6f90df409e
commit 22ca116bb0

View File

@@ -642,6 +642,12 @@ sub translate_substitute
$value =~ s/<tt>/<tt translate="no">/gm;
$value =~
s/(?:(^(?<!<)(\/[\w+].*?),|^(?<!<)(\/[\w+].*?)\.|(?<!<)(\/[\w+].*?) |(?<!<)(\/[\w+].*?)$))/<span translate="no">"$1"<\/span>/g;
# Wrap $1, $2 and etc into a tag with translate=no attr skipping already wrapped
$value =~ s/(?<!["])(\$\d+)(?!["'])/<span translate="no">$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})/<span translate="no">$1<\/span>/g;
}
return $value;
@@ -729,6 +735,8 @@ sub translated_substitute
$translated =~ s/&#39;/'/gi;
$translated =~ s/<tt translate="no">/<tt>/gm;
$translated =~ s/<span translate="no">(.*?)<\/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 =~ /&lt;|&gt;/ && $original !~ /<|>/ && $translated =~ /<|>/) {
$translated =~ s/</&lt;/g;