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