From 4829573badbeeb9bfb7eaa8c836b3397d10982dc Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 18 Aug 2009 15:59:39 +0000 Subject: hopefully fix the translation logic so that all escapes (supported) are translated git-svn-id: svn://tug.org/texlive/trunk@14746 c570f23f-e606-0410-a88d-b1316a301751 --- Master/tlpkg/translations/trans.pl | 57 +++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 25 deletions(-) (limited to 'Master/tlpkg') diff --git a/Master/tlpkg/translations/trans.pl b/Master/tlpkg/translations/trans.pl index 2d86b2f3656..9fa8cc1ff9f 100644 --- a/Master/tlpkg/translations/trans.pl +++ b/Master/tlpkg/translations/trans.pl @@ -66,32 +66,38 @@ if (defined($::opt_lang)) { our %TRANS; +# +# __ takes a string argument and checks that it sub __ ($) { - my $s = shift; + my $key = shift; + my $ret; # if no $::lang is set just return without anything - my $ss = $s; - $ss =~ s/\\n/\n/g; - return $ss if !defined($::lang); - my $key = $s; - $key =~ s/\n/\\n/g; - $key =~ s!\\!\\\\!g; - # if the translation is defined return it - if (defined($TRANS{$::lang}->{$key})) { - my $t = $TRANS{$::lang}->{$key}; - my $tt = $t; - $t =~ s/\n/\\n/g; - $t =~ s/\\\\/\\/g; - if ($::debug_translation && ($s eq $t)) { - print STDERR "probably untranslated in $::lang: >>>$key<<<\n"; + if (!defined($::lang)) { + $ret = $key; + } else { + $ret = $key; + $key =~ s/\\/\\\\/g; + $key =~ s/\n/\\n/g; + $key =~ s/"/\\"/g; + # if the translation is defined return it + if (defined($TRANS{$::lang}->{$key})) { + $ret = $TRANS{$::lang}->{$key}; + if ($::debug_translation && ($key eq $ret)) { + print STDERR "probably untranslated in $::lang: >>>$key<<<\n"; + } + } else { + # if we cannot find it, return $s itself + if ($::debug_translation && $::lang ne "en") { + print STDERR "no translation in $::lang: >>>$key<<<\n"; + } + # $ret is already set initially } - $tt =~ s!\\\\!\\!g; - return $tt; - } - # if we cannot find it, return $s itself - if ($::debug_translation && $::lang ne "en") { - print STDERR "no translation in $::lang: >>>$key<<<\n"; } - return $ss; + # translate back $ret: + $ret =~ s/\\n/\n/g; + $ret =~ s/\\"/"/g; + $ret =~ s/\\\\/\\/g; + return $ret; } if (($::lang ne "en") && ($::lang ne "C")) { @@ -123,9 +129,10 @@ if (($::lang ne "en") && ($::lang ne "C")) { if (!utf8::decode($msgstr)) { warn("decoding string to utf8 didn't work: $msgstr\n"); } - $msgid =~ s/\\"/"/g; - $msgstr =~ s/\\n/\n/g; - $msgstr =~ s/\\"/"/g; + # we decode msgid too to get \\ and not \ + if (!utf8::decode($msgid)) { + warn("decoding string to utf8 didn't work: $msgid\n"); + } $TRANS{$::lang}{$msgid} = $msgstr; } else { ddebug("untranslated $::lang: ...$msgid...\n"); -- cgit v1.2.3