Menu

#1797 Tcl msgcat ignores LC_ALL

obsolete: 8.4a5
closed-duplicate
5
2002-06-14
2002-03-04
No

The Tcl msgcat facility doesn't respect POSIX, by
looking only at LANG
and ignoring LC_MESSAGES and LC_ALL. Everywhere in
POSIX, LC_ALL
overrides LANG when set. But tcl ignores it. Thus, i18n
for Tcl
programs doesn't print messages in the same language as
other
applications do, if the user has set only LC_ALL and/or
LC_MESSAGES
but not LANG.

Description of LANG, LC_MESSAGES, LC_ALL:

LANG

This variable shall determine the locale category for
native language,
local customs, and coded character set in the absence
of the LC_ALL
and other LC_* ( LC_COLLATE , LC_CTYPE , LC_MESSAGES ,
LC_MONETARY ,
LC_NUMERIC , LC_TIME ) environment variables. This can
be used by
applications to determine the language to use for error
messages and
instructions, collating sequences, date formats, and so
on.

LC_MESSAGES

This variable shall determine the locale category for
processing
affirmative and negative responses and the language and
cultural
conventions in which messages should be written.
Additional semantics
of this variable, if any, are implementation-defined.
The language and
cultural conventions of diagnostic and informative
messages whose
format is unspecified by IEEE Std 1003.1-2001 should be
affected by
the setting of LC_MESSAGES .

LC_ALL

This variable shall determine the values for all locale
categories. The value of the LC_ALL environment
variable has
precedence over any of the other environment variables
starting with
LC_ ( LC_COLLATE , LC_CTYPE , LC_MESSAGES , LC_MONETARY
, LC_NUMERIC ,
LC_TIME ) and the LANG environment variable.

Furthermore please note that in this context, an
environment variable
whose value is empty is treated like if it were unset.

Discussion

  • Don Porter

    Don Porter - 2002-04-16
    • assigned_to: nobody --> dgp
     
  • Jeffrey Hobbs

    Jeffrey Hobbs - 2002-04-16

    Logged In: YES
    user_id=72656

    Against what version of Tcl, built on what platform is this
    complaint? The latest Tcl uses nl_langinfo - *where
    available* - to determine language info. I think that
    handles this (but I'm not an l10n expert).

     
  • Bruno Haible

    Bruno Haible - 2002-04-17

    Logged In: YES
    user_id=5923

    I was referring to tclx 8.3, coupled with tcl 8.3.3, running
    on
    SuSE Linux, as packaged in
    ftp://ftp.suse.com/pub/suse/i386/7.3/full-names/i386/tclx-8.3-136.i386.rpm

    The code which looks at LANG but not LC_ALL etc. was in the
    msgcat module, part of tclx.

     
  • Don Porter

    Don Porter - 2002-04-17

    Logged In: YES
    user_id=80530

    so this is really a TclX bug, not Tcl, nor msgcat package.

    Assigning to Jeff for disposal.

     
  • Don Porter

    Don Porter - 2002-04-17
    • labels: 105671 -->
    • assigned_to: dgp --> hobbs
    • status: open --> open-invalid
     
  • Don Porter

    Don Porter - 2002-06-07

    Logged In: YES
    user_id=80530

    Can we get a clarification on this report?
    Is it about the msgcat package that comes
    with Tcl?

    Or is it about [catopen], [catgets], [catclose]
    commands provided by TclX as its "msgcat" facility?

     
  • Bruno Haible

    Bruno Haible - 2002-06-14

    Logged In: YES
    user_id=5923

    The report was about the msgcat.tcl package.

    The patch for bug [ 525525 ] should solve this issue as
    well, because
    it correctly tests for empty environment variables:

    foreach varName {LC_ALL LC_MESSAGES LANG} {
    if {[info exists ::env($varName)]
    && ![string equal "" $::env($varName)]} {
    mclocale [ConvertLocale $::env($varName)]
    return
    }
    }

     
  • Don Porter

    Don Porter - 2002-06-14
    • assigned_to: hobbs --> dgp
    • labels: --> 30. msgcat Package
    • milestone: --> obsolete: 8.4a5
    • status: open-invalid --> closed-duplicate
     
  • Don Porter

    Don Porter - 2002-06-14

    Logged In: YES
    user_id=80530

    good, then I'm closing this as a duplicate of 525525