Package: po4a
Version: 0.28-1
Severity: normal
Tags: patch
Hello.
/usr/bin/po4a-translate -k 0 -f sgml -m ../en/release-notes.en.sgml -p
release-notes.ru.po -l
release-notes.ru.sgml -o ignore-inclusion="dynamicdata shareddata"
If PO file is used an UTF-8(where one character has occuped 2 and more bytes,
Cyrillic
for example), then the lines of the resulting file(release-notes.ru.sgml) is
too
short(less then 60 symbols).
It happens because of wrong calculation of length of a UTF-8 lines.
Attached patch is solved this problem, but only with wrapping.
I have not searched all places where a lenght calculation is may affected too.
Regards,
Yuri Kozlov
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.16-2-amd64-k8
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Versions of packages po4a depends on:
ii gettext 0.14.6-1 GNU Internationalization utilities
ii libsgmls-perl 1.03ii-31 Perl modules for processing SGML p
ii perl 5.8.8-4 Larry Wall's Practical Extraction
ii perl-modules 5.8.8-4 Core Perl modules
ii sp 1.3.4-1.2.1-47 James Clark's SGML parsing tools
Versions of packages po4a recommends:
ii liblocale-gettext-perl 1.05-1 Using libc functions for internati
pn libterm-readkey-perl <none> (no description available)
ii libtext-wrapi18n-perl 0.06-5 internationalized substitute of Te
-- no debconf information
--- /usr/share/perl5/Locale/Po4a/Po.pm 2006-08-22 16:21:57.000000000 +0400
+++ Po.pm 2006-09-24 19:14:11.000000000 +0400
@@ -776,7 +776,13 @@
}
if ($opt{'wrap'}) {
- $res=wrap ($res, $opt{'wrapcol'} || 76);
+ if ($self->get_charset eq "UTF-8") {
+ $res=Encode::decode_utf8($res);
+ $res=wrap ($res, $opt{'wrapcol'} || 76);
+ $res=Encode::encode_utf8($res);
+ } else {
+ $res=wrap ($res, $opt{'wrapcol'} || 76);
+ }
}
# print STDERR "Gettext >>>$text<<<(escaped=$esc_text)=[[[$res]]]\n\n";
return $res;