IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Interaction shell problème de langue par défaut


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut Interaction shell problème de langue par défaut
    Bonjour,

    J’utilise le module Expect pour automatiser une interaction avec le prompt shell. Malheureusement, suivant le langue par défaut du système d’exploitation, mon script ne réagis pas pareil.

    Comment m'assurer d'avoir les question système en anglais dans mon script pour être sur qu'il fonctionne quelque soit le langage?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/usr/bin/perl -w
    use strict ;
    use Gtk2 '-init' ;
    use String::MkPasswd qw(mkpasswd);
    use Expect; 
    use MIME::Lite;
    use utf8;

    Voici la ligne qui bloque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    #[ "[nN]ew password" => sub {
                    [ "[nN]ouveau mot de passe" => sub {
    J'aimerais que la ligne commentée fonctionne dans n'importe qu'elle cas de figure pour l'instant suivant que l’utilisateur choisi l'anglais ou le français il faut commenté l'une ou l'autre ligne.
    Merci de votre aide.

  2. #2
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour,

    Et en récupérant la variable d'environnement LANG ou LANGAGE ça ne te convient pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl -w
    use strict;
     
    sub var_exist {
            my $varenv='LANG';
            if (exists $ENV{$varenv})  {
                    print "\n$varenv = ".$ENV{$varenv}."\n\n";
                    exit 1;
            }
     
    }
     
    var_exist;
    [EDIT 18:30]
    Sous Windows il faut créer la variable environnement LANG, car elle n'existe pas de base...
    Et pour tester l'OS :

    Origine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/perl -w
    use strict;
    use English '-no_match_vars';    # Importer des variables prédéfinies
     
    print "=====\nOS : $OSNAME\n=====\n\n";

  3. #3
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Pour être plus clair :
    Env.pl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    #!/usr/bin/perl
    use warnings;
    use strict;
    use utf8;
    use File::Spec;														# Gestion des noms des chemins sous tous les OS
    use Config::Std;													# Lecture/ecriture d'un fichier .ini
    use English '-no_match_vars';							# Importer des variables prédéfinies
     
    my $RepBase      = 'E:/_DEV/_Essais';
    my $FichierIni   = File::Spec->catfile( $RepBase, 'Env.ini' );
    my %Config;
    if ( -e $FichierIni ) {
     	read_config $FichierIni => %Config;
    }
    else {
     	%Config = (
       	'GLOBAL' => {
       		Debug	=> 'OUI',
       	},
       	'fr-FR' => {
       		Lib_1	=> '',
    		},
    		'fr-FR' => {
       		Lib_1	=> '',
    		},
     	);
    }
     
    ActiverAccents();
    my $Lang = (var_exist('LANG'));
     
    if ( $Config{GLOBAL}{Debug} eq 'OUI' ) {
    	print "\nLANGUES CONNUES $Config{GLOBAL}{Langues}\n";
    	print "Variable environnement Langue = $Lang\n\n";
    }
     
    #####################
    # Programme principal
     
    print "Lib_1=$Config{$Lang}{Lib_1}\n";
    print "Lib_2=$Config{$Lang}{Lib_2}\n";
    print "Lib_3=$Config{$Lang}{Lib_3}\n";
     
    ###########
    # Fonctions
    sub var_exist {
    	my ( $varenv ) = @_;
    	if ( ! defined $Config{$ENV{$varenv}}{Active}) {
    		print "\nLangue gérées = $Config{GLOBAL}{Langues}\n";
    		print "Langue $ENV{$varenv} inconnue\n\n";
    		exit;
    	}
    	return ($ENV{$varenv});	
    }
     
    #==============================================================
    # Pour avoir les accents sur la console DOS
    # http://perl.developpez.com/faq/perl/?page=Terminal#AccentsDOS
    #==============================================================
    sub ActiverAccents {
    	my $encodage;
    	# Windows
      	if ( lc($^O ) eq 'mswin32') {
    		eval {
    			my ($codepage) = ( `chcp` =~ m/:\s+(\d+)/ );
    			$encodage = "cp$codepage";
    			foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
    				binmode $h, ":encoding($encodage)";
    			}
    		};	
    	}
    	else {
    		$encodage = `locale charmap`;
    		eval {
    			foreach my $h ( \*STDOUT, \*STDERR, \*STDIN, ) {
    				binmode $h, ":encoding($encodage)";
    			}
    		};	
    	}
      return $encodage;
    }
     
    #Sinon :
    #ü 	\x81 	à 	\x85 	è 	\x8A
    #é 	\x82 	ç 	\x87 	ï 	\x8B
    #â 	\x83 	ê 	\x88 	î 	\x8C
    #ä 	\x84 	ë 	\x89

    Si tu as beaucoup de libellés, il est préférable de les mettre dans un fichier :
    Env.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [GLOBAL]
    Debug: NON
    Langues: fr-FR en-EN
     
    [fr-FR]
    Active: OUI
    Lib_1: Non
    Lib_2: Oui
    Lib_3: [nN]ouveau mot de passe
     
    [en-EN]
    Active: OUI
    Lib_1: Not
    Lib_2: Yes
    Lib_3: [nN]ew password
    [FIN]
    Je ne connais pas Expect
    Mais tu dois pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Config{$Lang}{Lib_3} => sub {
    Il vaut mieux utiliser la variable LANGUAGE qui sous Unix/Linux ne contient pas le codage des caractères :
    LANG=fr-FR.UTF-8
    LANGAGE=fr-FR
    Sur Mac... je ne sais pas

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/10/2009, 18h10
  2. Problème de timezone par défaut
    Par TiVoye dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/07/2009, 09h48
  3. Langage du site avec langue par défaut
    Par CaZaE dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2007, 13h21
  4. Réponses: 1
    Dernier message: 25/09/2006, 09h50
  5. [Cookies] Langue par défaut sur un site web
    Par Jet-Li dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2005, 20h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo