POD2-FR

 view release on metacpan or  search on metacpan

FR/perllocale.pod  view on Meta::CPAN


        perl: warning: Setting locale failed.
        perl: warning: Please check that your locale settings:
                LC_ALL = "En_US",
                LANG = (unset)
            are supported and installed on your system.
        perl: warning: Falling back to the standard locale ("C").

Cela signifie que vos réglages de "locale" ont LC_ALL positionné à "En_US" et
que LANG existe mais n'a pas de valeur. Perl essaye de vous croire mais il ne
le peut pas. À la place, Perl y renonce et retombe sur le "locale" "C", la
"locale" par défaut qui est supposé fonctionner en toutes circonstances. Cela
signifie que vos réglages de "locale" sont mauvais. Soit ils mentionnent des
"locale" dont votre système n'a jamais entendu parler, soit l'installation des
"locale" est mal faite sur votre système (par exemple, certains fichiers
systèmes sont défectueux ou manquants). Il y a des solutions rapides et
temporaires à ces problèmes mais aussi des solutions plus minutieuses et
définitive.

=head2 Résolution temporaire des problèmes de "locale"

Les deux solutions les plus rapides sont soit de rendre Perl silencieux sur
d'éventuelles inconsistances des "locale" soit de faire tourner Perl avec le
"locale" par défaut ("C").

Les plaintes de Perl au sujet des problèmes de "locale" peuvent être
supprimées en positionnant la variable d'environnement PERL_BADLANG à la
valeur zéro (par exemple "0"). Cette méthode ne fait que cacher le S<problème
:> vous demandez à Perl de se taire même si il voit que quelque chose ne va
pas. Ne soyez donc pas surpris, plus tard, lorsque vous constaterez des
dysfonctionnements de choses dépendant des "locale".

Perl peut tourner avec le "locale" "C" par défaut en positionnant la variable
d'environnement LC_ALL à "C". Cette méthode est peut-être un peu plus
civilisée que l'approche par PERL_BADLANG mais la valeur de LC_ALL (ou de tout
autre variable liée au "locale") peut affecter aussi d'autres programmes en
plus de Perl. En particulier vos programmes externes lancés depuis Perl
verront ces changements. Si vous rendez ces nouveaux réglages permanents, tous
les programmes que vous ferez tourner les verront. Voir L<"ENVIRONNEMENT"> pour
une liste complète des variables d'environnement pertinentes et L<UTILISATION
DES "LOCALE"> pour leurs effets sur Perl. Les effets sur les autres programmes
sont aisément déduits. Par exemple, la variables LC_COLLATE peut très bien
influencer votre programme B<sort> (ou plutôt le programme qui trient des
'enregistrements' dans l'ordre alphabétique, quel que soit son nom sur votre
système).

Vous pouvez tester des changements temporaires sur ces variables puis, lorsque
les nouveaux réglages semblent améliorer les choses, placer ces réglages dans
l'un des fichiers de démarrage de votre shell. Consultez votre documentation
locale pour les détails. Pour les shells de type Bourne-shell (B<sh>, B<ksh>,
B<bash>, B<zsh>), cela S<donne :>

        LC_ALL=en_US.ISO8859-1
        export LC_ALL

Cela suppose que vous avez vu le "locale" "en_US.ISO8859-1" en utilisant l'une
des commandes présentées plus haut. Nous avons décidé d'essayer celui-là à la
place du "locale" fautif "En_US". En shell type C-shell (B<csh>, B<tcsh>),
cela S<donne :>

        setenv LC_ALL en_US.ISO8859-1

Si vous ne connaissez pas le shell que vous utilisez, consultez votre aide en
ligne.

=head2 Résolution permanente des problèmes de "locale"

La méthode plus langue mais définitive de résoudre les problèmes de "locale"
est de corriger vous-même la mauvaise installation ou configuration. La
correction de la mauvaise (ou inexistante) installation peut nécessiter l'aide
d'un administrateur système complaisant.

Tout d'abord, voyez plus haut ce qui concerne L<Trouver les "locale">. Cela
vous explique comment savoir les "locale" réellement supportés - et, plus
important, installés -- sur votre système. Dans notre message d'erreur
d'exemple, les variables d'environnement affectant les "locale" sont listées
dans l'ordre décroissant d'importance (la variables non positionnées ne
comptent pas). Par conséquent, avoir LC_ALL fixé à "En_US" doit être un
mauvais choix tel que se présente notre message d'erreur. Essayez donc de
corriger les réglages de "locale" listés en premier.

En second, si en utilisant les commandes suggérées, vous voyez B<exactement>
quelque chose comme "En_US" sans les guillemets alors cela devrait fonctionner
puisque vous utilisez alors un "locale" qui est censé être disponible sur
votre système. Dans ce cas, voyez L<Résolution permanente des problèmes de
configuration système des "locale">.

=head2 Résolution permanente des problèmes de configuration système des "locale"

C'est lorsque vous voyez quelque chose S<comme :>

        perl: warning: Please check that your locale settings:
                LC_ALL = "En_US",
                LANG = (unset)
            are supported and installed on your system.

mais que vous ne trouvez pas "En_US" dans les listes produites par les
commandes mentionnées plus haut. Vous pouvez voir des choses comme
"en_US.ISO8859-1" mais ce n'est pas la même chose. Dans ce cas, essayez le
"locale" de la liste qui ressemble le plus à celui que vous aviez
précédemment. Les règles pour trouver les noms des "locale" sont un peu vagues
car il y a un manque de standardisation dans ce domaine. Voir L<Trouver les
"locale"> pour les règles générales.

=head2 Configuration système des "locale"

Contactez un administrateur système (de préférence le vôtre), rapportez lui
exactement le message que vous avez obtenu et demandez lui de lire la
documentation que vous lisez présentement. Il devrait être en mesure de
trouver ce qui ne va pas dans le configuration des "locale" de votre
système. L<Trouver les "locale"> est malheureusement un peu vague à propos des
commandes et des emplacements car tout cela n'est pas standardisé.

=head2 La fonction localeconv

La fonction POSIX::localeconv() vous permet d'obtenir toutes les informations
particulières liées au formatage des valeurs numériques selon le "locale"
spécifié par C<LC_NUMERIC> et C<LC_MONETARY>. (Si vous voulez juste le nom du
"locale" courant pour une catégorie particulière, utilisez POSIX::setlocale()
avec un seul argument -- voir L<La fonction setlocale>.)



( run in 0.559 second using v1.01-cache-2.11-cpan-6aa56a78535 )