[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Help needed with a locale-related issue



On Tue, 1 Sep 2015 00:18:12 +0200 Francesco Poli wrote:

> Hello all,
> while testing some odd locale configurations with the package
> I maintain (apt-listbugs), I stumbled upon an awkward crash.
> I am seeking the help of some knowledgeable Ruby expert, to understand
> what's going on.
> 
> The crash may be reproduced with apt-listbugs version 0.1.14 or later
> (which uses the ruby-unicode library to correctly compute the width of
> UTF-8 strings).
> 
>   $ locale
>   LANG=en_US.UTF-8
>   LANGUAGE=
>   LC_CTYPE="en_US.UTF-8"
>   LC_NUMERIC="en_US.UTF-8"
>   LC_TIME="en_US.UTF-8"
>   LC_COLLATE="en_US.UTF-8"
>   LC_MONETARY="en_US.UTF-8"
>   LC_MESSAGES="en_US.UTF-8"
>   LC_PAPER="en_US.UTF-8"
>   LC_NAME="en_US.UTF-8"
>   LC_ADDRESS="en_US.UTF-8"
>   LC_TELEPHONE="en_US.UTF-8"
>   LC_MEASUREMENT="en_US.UTF-8"
>   LC_IDENTIFICATION="en_US.UTF-8"
>   LC_ALL=
>   $ apt-listbugs -v
>   0.1.17
> 
> So far so good, everything works as expected.
> But, if I try the following odd locale configuration (Italian language
> with 'C' locale settings), I get a crash:
> 
>   $ LANGUAGE='it_IT:it' LC_ALL='C' locale
>   LANG=en_US.UTF-8
>   LANGUAGE=it_IT:it
>   LC_CTYPE="C"
>   LC_NUMERIC="C"
>   LC_TIME="C"
>   LC_COLLATE="C"
>   LC_MONETARY="C"
>   LC_MESSAGES="C"
>   LC_PAPER="C"
>   LC_NAME="C"
>   LC_ADDRESS="C"
>   LC_TELEPHONE="C"
>   LC_MEASUREMENT="C"
>   LC_IDENTIFICATION="C"
>   LC_ALL=C
>   $ LANGUAGE='it_IT:it' LC_ALL='C' apt-listbugs -v
>   /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:390:in `width': "\xC3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
>           from /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:390:in `<class:SimpleViewer>'
>           from /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:387:in `<class:Viewer>'
>           from /usr/lib/ruby/vendor_ruby/aptlistbugs/logic.rb:381:in `<top (required)>'
>           from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
>           from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
>           from /usr/bin/apt-listbugs:349:in `<main>'
> 
> 
> The failing statements are:
> 
>     DeprecatedWarning = _("********** on_hold IS DEPRECATED. USE p INSTEAD to use pin **********")
>     DeprecatedWarningHeader = "*" * Unicode.width(DeprecatedWarning)
> 
> If I understand correctly, what seems to happen is that:
> 
>   • the DeprecatedWarning string is assigned the Italian translation of
> the English message
> 
>   • the English message is ASCII, while the Italian translation
> includes some non-ASCII UTF-8 characters
> 
>   • ruby-gettext returns a non-UTF-8 string, since LC_CTYPE is 'C' (?)
> 
>   • ruby-unicode fails to compute the width of this string, since it
> unsuccessfully attempts to convert it to UTF-8 (?)
> 
> 
> Now, my question is: which package should be blamed for the crash?
> 
> Should I change the way I use ruby-unicode in apt-listbugs?
> Or should I report a bug against package ruby-unicode? Or against
> package ruby-gettext or ruby-locale?
> 
> Could some Ruby expert shed some light on this issue, please?
> Thanks for your time!
> 
> 
> P.S.: I am not subscribed to debian-ruby, hence please Cc me on replies.


Any idea?

Sorry to bother you again, but I would like to file a bug report
against the correct package, rather than against the first that comes
to my mind...

Thanks for any help you may provide.


-- 
 http://www.inventati.org/frx/
 There's not a second to spare! To the laboratory!
..................................................... Francesco Poli .
 GnuPG key fpr == CA01 1147 9CD2 EFDF FB82  3925 3E1C 27E1 1F69 BFFE

Attachment: pgpK6edVEyld2.pgp
Description: PGP signature


Reply to: