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

Re: Help needed with a locale-related issue



On Mon, 14 Sep 2015 18:25:26 +0300 Hleb Valoshka wrote:

> On 9/14/15, Hleb Valoshka <375gnu@gmail.com> wrote:
> 
> > It looks like a ruby-gettext error, GNU gettext in such cases returns
> > original string (because LC_MESSAGES=C), but I should check docs for
> > gettext.
> 
> ruby-locale, actually. Feel free to report bug against it.

Thanks a lot for looking into the issue, but there's one thing I am not
sure I get right: the original string only includes ASCII characters
and works fine with Unicode.width() .

Indeed, if I issue the following command:

  $ LC_ALL=C locale
  LANG=en_US.UTF-8
  LANGUAGE=
  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
  $ LC_ALL=C apt-listbugs -v
  0.1.17

everything seems to work as it should.

Also:

  $ LANGUAGE='en_US:en' LC_ALL=C apt-listbugs -v
  0.1.17
  $ LANGUAGE='de_DE:de' LC_ALL=C apt-listbugs -v
  0.1.17

work fine.

I only get into trouble when the translated string includes non-ASCII
UTF-8 characters and the LC_CTYPE is "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>'
  $ LANGUAGE='it_IT:it' LC_CTYPE='C' locale
  LANG=en_US.UTF-8
  LANGUAGE=it_IT:it
  LC_CTYPE=C
  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=
  $ LANGUAGE='it_IT:it' LC_CTYPE='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>'
  $ LANGUAGE='it_IT:it' locale
  LANG=en_US.UTF-8
  LANGUAGE=it_IT:it
  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=
  $ LANGUAGE='it_IT:it' apt-listbugs -v
  0.1.17


Hence, it seems to me that the trouble is not caused by the original
string, but by those translated strings that include non-ASCII UTF-8
characters and are somehow sent as non-UTF-8 non-pure-ASCII strings,
whenever LC_CTYPE=C ...



-- 
 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: pgpRr0SVFE3j8.pgp
Description: PGP signature


Reply to: