qt-locale.patch

Jakub Bogusz qboosh w pld-linux.org
Wto, 13 Lip 2004, 22:16:49 CEST


On Tue, Jul 13, 2004 at 10:07:14PM +0200, Piotr Szymański wrote:
> Hi,
> Nim usune ten pacz chcialbym sie spytac jakie jest poprawne zachowanie?

Ogólnie to man 7 locale:

       Jeśli  drugim  argumentem setlocale() jest łańcuch pusty "" oznaczający
       locale domyślne, ustala się je wedle poniższych kroków:

       1.     Jeśli istnieje niepusta  zmienna  środowiskowa  LC_ALL,  używana
              jest wartość LC_ALL

       2.     Jeśli  istnieje i jest niepusta zmienna środowiskowa o tej samej
              nazwie co jedna z kategorii powyżej, dla tej  kategorii  używana
              jest jej wartość.

       3.     Jeśli  istnieje niepusta zmienna środowiskowa LANG, używana jest
              wartość LANG

Oczywiście zmienna="C" to też niepusta wartość, wbrew temu co się
któremuś trollowi wydawało.

> *****************************************************************************
> --- qt-x11-free-3.1.2/src/core/codecs/qtextcodec.cpp.orig       2003-07-11 
> 21:04:02.000000000 +0200
> +++ qt-x11-free-3.1.2/src/core/codecs/qtextcodec.cpp    2003-07-11 
> 21:07:31.000000000 +0200
> @@ -2667,11 +2675,13 @@
>         // Get the first nonempty value from $LC_ALL, $LC_CTYPE, and $LANG
>         // environment variables.
>         char * lang = qstrdup( getenv("LC_ALL") );
> -       if ( !lang || lang[0] == 0 || strcmp( lang, "C" ) == 0 ) {
> +       if ( !lang || lang[0] == 0 )
> +       {
>             if ( lang ) delete [] lang;
>             lang = qstrdup( getenv("LC_CTYPE") );
>         }
> -       if ( !lang || lang[0] == 0 || strcmp( lang, "C" ) == 0 ) {
> +       if ( !lang || lang[0] == 0 )
> +       {
>             if ( lang ) delete [] lang;
>             lang = qstrdup( getenv("LANG") );
>         }
> *****************************************************************************
> 
> Zakladanie ze jesli LC_ALL=C to LANG=C jest chyba bledne, wiec to jest do 
> wyrzucenia?

Jeśli jest ustawione LC_ALL=C, to ma to priorytet nad innymi LC_* - ich
ustawienia (ani LANG) nie mają wtedy znaczenia, mają być ignorowane.

> *****************************************************************************
> --- qt-copy-040205/src/core/tools/qlocale.cpp.orig      2004-02-05 
> 12:23:24.000000000 +0100
> +++ qt-copy-040205/src/core/tools/qlocale.cpp   2004-02-05 12:49:16.000000000 
> +0100
> @@ -1636,7 +1636,15 @@
>  const char* QLocalePrivate::systemLocaleName()
>  {
>      static QCString lang;
> -    lang = getenv( "LANG" );
> +    lang = getenv( "LC_ALL" );
> +    if ( lang.isEmpty() )
> +       {
> +               lang = getenv( "LC_MESSAGES" );
> +       }
> +   if ( lang.isEmpty() )
> +       {
> +               lang = getenv( "LANG" );
> +       }
> 
>  #if !defined( QWS ) && defined( Q_OS_MAC )
>      if ( !lang.isEmpty() )
> *****************************************************************************
> Tutaj tak samo, AFAIR w /etc/sysconfig/i18n sterujemy ustawieniem jezyka za 
> pomoca LANG a nie LC_ALL albo LC_MESSAGES ktore przeciez moga byc rozne?

jw. Było źle, łata to poprawia.
Dla komunikatów LC_ALL ma priorytet najwyższy, pośrodku jest LC_MESSAGES,
najniższy ma LANG.
LANG można w ogóle nie ustawiać.


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/




Więcej informacji o liście dyskusyjnej pld-devel-pl