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

PyQt Python Discussion :

Changement de local ?!


Sujet :

PyQt Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut Changement de local ?!
    Bonjour,

    j'aurais besoin de recuperer la date du jour, le tout en anglais (les noms anglais).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    datetime.now().strftime("%a, %d %b %Y")
    => 'Tue, 13 May 2014'
    C'est parfait, mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if __name__ == '__main__':
        datetime.now().strftime("%a, %d %b %Y")
            => 'Tue, 13 May 2014'
    
        app = QApplication(sys.argv)
        datetime.now().strftime("%a, %d %b %Y")
            'mar., 13 mai 2014 13:18:45'
    
        lpsm = lpsm()
        app.exec_()
    Je ne pige pas trop pourquoi la langue change à ce moment là ?!

    Pouvez vous m'expliquer svp ?

    Merci !
    Sous Kubuntu 20.04

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Il n'y a rien à comprendre: lorsque vous lancez Python, le locale n'est pas mis à jour.
    Si vous lancez une application Qt, QtCoreApplication va récupérer le locale et le mettre à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> import locale
    >>> print (locale.getlocale())
    (None, None)
    >>> from datetime import datetime
    >>> datetime.now().strftime('%a %d %b %Y')
    'Tue 13 May 2014'
    >>> locale.setlocale(locale.LC_ALL, '')
    'French_France.1252'
    >>> datetime.now().strftime('%a %d %b %Y')
    'mar. 13 mai 2014'
    >>>
    Et il semble normal que Qt dont le boulot est de simplifier l'écriture d'interfaces I18N fasse le petit plus (.setlocale) que ne fait pas Python par défaut.
    (mais vous pouvez customiser le startup de Python pour que...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Merci pour l'info, j'avais un peu de mal à piger vu que de base il me dit que je suis en fr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import locale
    >>> print(locale.getlocale())
    ('fr_FR', 'UTF-8')
    il faut donc que je fasse la modification moi m^eme après.

    Merci.
    Sous Kubuntu 20.04

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par hizoka Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import locale
    >>> print(locale.getlocale())
    ('fr_FR', 'UTF-8')
    Si getlocale retourne fr_FR, on s'attend à ce que .strftime retourne un mois en français.
    Et si le comportement n'est pas conforme à l'idée qu'on s'en fait, c'est qu'on a loupé un truc.

    il faut donc que je fasse la modification moi m^eme après.
    A vous de voir mais, la locale est héritée des variables du shell.
    Soit vous positionnez la variable LANG à en_US avant de lancer le programme.
    Soit vous récupérez l'état du locale, mettez à jour en en_US, appel de .strftime, restauration...
    Et si vous utilisez des threads, il faut s'assurer que les locale sont spécifiques aux threads (j'ai jamais regardé comment Python s'en sort ici).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/01/2013, 14h49
  2. Changement local de police en comicsans
    Par yaspat dans le forum Mise en forme
    Réponses: 1
    Dernier message: 02/10/2008, 15h28
  3. Changement d'@ IP Locale
    Par ArHacKnIdE dans le forum Hardware
    Réponses: 11
    Dernier message: 29/08/2006, 11h37
  4. Réponses: 3
    Dernier message: 15/06/2006, 16h43
  5. Changement dynamiquement de la GDB distante en local
    Par ada_b dans le forum Débuter
    Réponses: 4
    Dernier message: 18/05/2005, 13h15

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