Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

autoconf et localisation

10 réponses
Avatar
JKB
Bonjour à tous,

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200

Une idée ?

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr

10 réponses

Avatar
Bruno Ducrot
On 2015-06-16, JKB wrote:
Bonjour à tous,

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200

Une idée ?




Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias

IL me semble que les debian récentes ne positionne plus l'alias
en question.

NB : tu peux aussi modifier DATE_FR afin d'utiliser fr_FR.ISO-8859-15,
ce qui, AMHA, serait plus approprié.

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
Sergio
Le 16/06/2015 09:14, JKB a écrit :

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200




T'inquiètes...

Chez moi, ça donne :

$ DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
$ DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
:~$ echo $DATE
mardi, 16 juin 2015 09:32:24 +0200
$ echo $DATE_FR
Tuesday, 16 June 2015 09:32:24 +0200

Donc exactement le contraire de ce qu'on attendait !

LinuxMint 17.1:
$ uname -a
Linux slibovix 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.[...]

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
JKB
Le Tue, 16 Jun 2015 07:32:34 +0000 (UTC),
Bruno Ducrot écrivait :
On 2015-06-16, JKB wrote:
Bonjour à tous,

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.

J'ai écrit il y a plusieurs années ceci dans un configure.ac :

dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200

Une idée ?




Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.

IL me semble que les debian récentes ne positionne plus l'alias
en question.

NB : tu peux aussi modifier DATE_FR afin d'utiliser fr_FR.ISO-8859-15,
ce qui, AMHA, serait plus approprié.



En l'occurrence, je préférerais même l'UTF-8 ;-)

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Avatar
JKB
Le Tue, 16 Jun 2015 09:37:25 +0200,
Sergio écrivait :
Le 16/06/2015 09:14, JKB a écrit :

Je viens de m'apercevoir d'un nouveau bug^W^Wune nouvelle feature
dans autoconf.



J'ai écrit il y a plusieurs années ceci dans un configure.ac :



dnl Date
DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
AC_SUBST(DATE)
AC_SUBST(DATE_FR)

et je suis sûr que cela fonctionnait. J'avais bien une date en
français et l'autre en anglais. Aujourd'hui, le même script retourne :

DATE='Tuesday, 16 June 2015 09:06:29 +0200'
DATE_FR='Tuesday, 16 June 2015 09:06:29 +0200'

Or LANG=C date +"%A, %e %B %Y %T %z" est censé retourner :
Tuesday, 16 June 2015 09:10:19 +0200
et LANG=fr_FR date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 09:11:08 +0200




T'inquiètes...

Chez moi, ça donne :

$ DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
$ DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
:~$ echo $DATE
mardi, 16 juin 2015 09:32:24 +0200
$ echo $DATE_FR
Tuesday, 16 June 2015 09:32:24 +0200

Donc exactement le contraire de ce qu'on attendait !

LinuxMint 17.1:
$ uname -a
Linux slibovix 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.[...]



Ce n'est pas vraiment pour me rassurer...

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Avatar
YBM
Le 16/06/2015 09:59, JKB a écrit :
Le Tue, 16 Jun 2015 09:37:25 +0200,
Sergio écrivait :


...
Chez moi, ça donne :

$ DATE=$(env LANG=C date +"%A, %e %B %Y %T %z")
$ DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
:~$ echo $DATE
mardi, 16 juin 2015 09:32:24 +0200
$ echo $DATE_FR
Tuesday, 16 June 2015 09:32:24 +0200

Donc exactement le contraire de ce qu'on attendait !

LinuxMint 17.1:
$ uname -a
Linux slibovix 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.[...]



Ce n'est pas vraiment pour me rassurer...



ouais... c'est pas trop normal quand même :

$ env LANG=fr_FR date +"%A, %e %B %Y %T %z"
Tuesday, 16 June 2015 13:55:35 +0200
$ env LANG=fr_FR.UTF8 date +"%A, %e %B %Y %T %z"
mardi, 16 juin 2015 13:55:37 +0200
$ uname -a
Linux lomond 3.2.0-83-generic #120-Ubuntu SMP Wed Apr 29 15:37:05 UTC
2015 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
Avatar
Bruno Ducrot

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.

IL me semble que les debian récentes ne positionne plus l'alias
en question.

NB : tu peux aussi modifier DATE_FR afin d'utiliser fr_FR.ISO-8859-15,
ce qui, AMHA, serait plus approprié.



En l'occurrence, je préférerais même l'UTF-8 ;-)



--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
JKB
Le Tue, 16 Jun 2015 12:32:34 +0000 (UTC),
Bruno Ducrot écrivait :

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.



C'est bien dans la liste. Et cela fonctionne parfaitement en ligne
de commande. Ce n'est qu'à partir du script autoconf que cela ne
fonctionne pas.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Avatar
Bruno Ducrot
On 2015-06-16, JKB wrote:
Le Tue, 16 Jun 2015 12:32:34 +0000 (UTC),
Bruno Ducrot écrivait :

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.



C'est bien dans la liste. Et cela fonctionne parfaitement en ligne
de commande. Ce n'est qu'à partir du script autoconf que cela ne
fonctionne pas.

JKB




C'est en effet assez étrange. Ce qui est rigolo, c'est que
si on remplace par LC_ALL, alors ca tombe en marche :

:~/t/ac$ cat configure.ac
AC_INIT([test], [0.1], [])
DATE_LC_FR=$(env LC_ALL=fr_FR date +"%A, %e %B %Y %T %z")
DATE_LANG_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_LC_FR
echo $DATE_LANG_FR
:~/t/ac$ autoconf
:~/t/ac$ ./configure
mardi, 16 juin 2015 16:25:12 +0200
Tuesday, 16 June 2015 16:25:12 +0200


Par contre, je ne vois pas pourquoi ca coince avec LANG, puisque :

:~/t/ac$ cat test_LANG.sh
#!/bin/sh
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
:~/t/ac$ ./test_LANG.sh
mardi, 16 juin 2015 16:32:34 +0200


fonctionne comme il faut (que ce soit bash ou dash, d'ailleurs).

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
JKB
Le Tue, 16 Jun 2015 14:33:24 +0000 (UTC),
Bruno Ducrot écrivait :
On 2015-06-16, JKB wrote:
Le Tue, 16 Jun 2015 12:32:34 +0000 (UTC),
Bruno Ducrot écrivait :

Vérifie que tu as bien :
fr_FR fr_FR.ISO-8859-15
dans /etc/locale.alias



C'est bien le cas.



Est-ce que fr_FR est bien dans la liste que donne locale -a ?
Si la locale fr_FR.ISO-8859-1 (ou 15) n'est pas installé alors l'alias
ne marchera pas. Ou alors, modifie-le pour utiliser fr_FR.UTF-8.



C'est bien dans la liste. Et cela fonctionne parfaitement en ligne
de commande. Ce n'est qu'à partir du script autoconf que cela ne
fonctionne pas.

JKB




C'est en effet assez étrange. Ce qui est rigolo, c'est que
si on remplace par LC_ALL, alors ca tombe en marche :

:~/t/ac$ cat configure.ac
AC_INIT([test], [0.1], [])
DATE_LC_FR=$(env LC_ALL=fr_FR date +"%A, %e %B %Y %T %z")
DATE_LANG_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_LC_FR
echo $DATE_LANG_FR
:~/t/ac$ autoconf
:~/t/ac$ ./configure
mardi, 16 juin 2015 16:25:12 +0200
Tuesday, 16 June 2015 16:25:12 +0200


Par contre, je ne vois pas pourquoi ca coince avec LANG, puisque :

:~/t/ac$ cat test_LANG.sh
#!/bin/sh
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
:~/t/ac$ ./test_LANG.sh
mardi, 16 juin 2015 16:32:34 +0200


fonctionne comme il faut (que ce soit bash ou dash, d'ailleurs).

A plus,




Effectivement, avec LC_ALL, ça fonctionne. Encore un mystère.

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Avatar
Benoit Izac
Bonjour,

le 16/06/2015 à 19:38, JKB a écrit dans le
message :

C'est en effet assez étrange. Ce qui est rigolo, c'est que
si on remplace par LC_ALL, alors ca tombe en marche :

:~/t/ac$ cat configure.ac
AC_INIT([test], [0.1], [])
DATE_LC_FR=$(env LC_ALL=fr_FR date +"%A, %e %B %Y %T %z")
DATE_LANG_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_LC_FR
echo $DATE_LANG_FR
:~/t/ac$ autoconf
:~/t/ac$ ./configure
mardi, 16 juin 2015 16:25:12 +0200
Tuesday, 16 June 2015 16:25:12 +0200


Par contre, je ne vois pas pourquoi ca coince avec LANG, puisque :

:~/t/ac$ cat test_LANG.sh
#!/bin/sh
DATE_FR=$(env LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
:~/t/ac$ ./test_LANG.sh
mardi, 16 juin 2015 16:32:34 +0200


fonctionne comme il faut (que ce soit bash ou dash, d'ailleurs).

A plus,




Effectivement, avec LC_ALL, ça fonctionne. Encore un mystère.



En fait, autoconf t'exporte un LC_ALL=C et, conformément à
<http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_02>
(chercher precedence), si LC_ALL est défini, les autres n'ont pas d'effet.

% cat configure.ac
AC_INIT([test], [0.1], [])
DATE_FR=$(unset LC_ALL; LANG=fr_FR date +"%A, %e %B %Y %T %z")
echo $DATE_FR
% autoconf && ./configure
mardi, 16 juin 2015 20:33:39 +0200
% grep -n LC_ configure
129:LC_ALL=C
130:export LC_ALL
1664:DATE_FR=$(unset LC_ALL; LANG=fr_FR date +"%A, %e %B %Y %T %z")
% date
Tue Jun 16 20:33:46 CEST 2015

--
Benoit Izac