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

Python Discussion :

locale - Liste des langues supportées


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut locale - Liste des langues supportées
    Bonsoir,
    j'aimerais connaître la liste des langues supportées par le module locale, tout étant au format "fr_FR" , "en_GB"... C'est sûrement caché dans la doc mais j'ai pas vu...

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Eh oui les documentations ne se limitent pas à python

    et pour les langues -> ICI

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    On peut trouver toutes les langues utilisées par locale avec le dictionnaire "locale_alias" qui se trouve dans le module "locale.py" mais qui n'est pas documenté dans la doc (Python 3):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import locale
     
    L = list(locale.locale_alias.items())
     
    L.sort(key=lambda v: v[0])
     
    for cle, val in L:
        print(cle,"===>",val)
    Ce qui affiche (petit extrait):

    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
    a3 ===> a3_AZ.KOI8-C
    a3_az ===> a3_AZ.KOI8-C
    a3_az.koi8c ===> a3_AZ.KOI8-C
    af ===> af_ZA.ISO8859-1
    af_za ===> af_ZA.ISO8859-1
    ...
    ...
    ...
    fr_fr ===> fr_FR.ISO8859-1
    fr_fr.88591 ===> fr_FR.ISO8859-1
    fr_fr.iso88591 ===> fr_FR.ISO8859-1
    fr_fr.iso885915 ===> fr_FR.ISO8859-15
    fr_fr.iso885915@euro ===> fr_FR.ISO8859-15
    fr_fr.utf8@euro ===> fr_FR.UTF-8
    fr_fr@euro ===> fr_FR.ISO8859-15
    ...
    ...
    ...
    zh_tw.euctw ===> zh_TW.eucTW
    zu ===> zu_ZA.ISO8859-1
    zu_za ===> zu_ZA.ISO8859-1
    zu_za.iso88591 ===> zu_ZA.ISO8859-1
    Je n'ai affiché que le français de France, mais il y a tous les autres: ca, be, lu, ch, ...

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Nickel. Même pas penser à regarder la doc Python2...

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,
    Citation Envoyé par rambc Voir le message
    Bonsoir,
    j'aimerais connaître la liste des langues supportées par le module locale, tout étant au format "fr_FR" , "en_GB"... C'est sûrement caché dans la doc mais j'ai pas vu...
    Les "locale" retournes seront ceux supportes/disponibles sur l'OS.
    Si vous voulez les connaître, c'est "locale -a" sous bash.
    locale.locale_alias ne donne que des "alias", des noms plus courts que le nom "standard".

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

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour wiztricks,

    Citation Envoyé par wiztricks Voir le message
    c'est "locale -a" sous bash
    C'est bien ce qui me semblait, et j'avais essayé: ça ne marche pas sous Windows.

    Y a-t-il une solution "Windows"?

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Y a-t-il une solution "Windows"?
    Certainement quelque part...
    En fait, je n'ai jamais eu de problème sous Windows qui me motive a chercher... donc je sais pas, désolé.

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

  8. #8
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai essayé de connaître les langages disponibles sous Windows. Je ne suis pas sûr d'avoir la "bonne" méthode, mais ça a l'air de marcher.

    J'ai cherché une liste de langages mondiaux écrits en anglais. Je l'ai trouvé ici:

    http://www.loc.gov/standards/iso639-...glish_list.php

    Attention: ce sont bien des noms de langage et non de pays. Par exemple pour l'espagnol, on cherche "spanish" et non "Spain".

    J'ai transporté le tableau par copier-coller dans un éditeur de texte, ce qui m'a donné des colonnes séparées par des tabulations. J'ai enregistré sous le nom "nomdelangages.txt"

    J'ai extrait les noms seuls comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    nf = "nomsdelangages.txt"
    with open(nf, 'r') as f:
        L = []
        for ligne in f:
            langage = ligne.split()[0].rstrip(',')
            if langage not in L:
                L.append(langage)
    Ce qui donne pour L: une liste de 527 langages.

    J'ai ensuite cherché la liste des langages correspondant à 2 critères:
    - l'application à setlocale ne génère pas d'erreur
    - locale.normalize permet de connaître l'encodage de la langue
    voilà comment:

    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
    # sauvegarde de la locale courante
    lcl = locale.getlocale()
     
    # sélection des langages disponible sur l'OS:
    LW = []
    for loc in L:
        try:
            locale.setlocale(locale.LC_ALL, loc)
            enc = locale.normalize(loc).split('.')
            if len(enc)!=2:
                continue
            LW.append([loc, enc[0], enc[1]])
        except:
            pass
     
    # restauration de la locale initiale
    locale.setlocale(locale.LC_ALL, lcl)
    Cela donne la liste suivante:

    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
    ['Arabic', 'ar_AA', 'ISO8859-6']
    ['Bulgarian', 'bg_BG', 'CP1251']
    ['Catalan', 'ca_ES', 'ISO8859-1']
    ['Croatian', 'hr_HR', 'ISO8859-2']
    ['Czech', 'cs_CZ', 'ISO8859-2']
    ['Danish', 'da_DK', 'ISO8859-1']
    ['Dutch', 'nl_NL', 'ISO8859-1']
    ['English', 'en_EN', 'ISO8859-1']
    ['Estonian', 'et_EE', 'ISO8859-1']
    ['Finnish', 'fi_FI', 'ISO8859-1']
    ['French', 'fr_FR', 'ISO8859-1']
    ['Galician', 'gl_ES', 'ISO8859-1']
    ['German', 'de_DE', 'ISO8859-1']
    ['Greek', 'el_GR', 'ISO8859-7']
    ['Hebrew', 'iw_IL', 'ISO8859-8']
    ['Hungarian', 'hu_HU', 'ISO8859-2']
    ['Icelandic', 'is_IS', 'ISO8859-1']
    ['Italian', 'it_IT', 'ISO8859-1']
    ['Japanese', 'ja_JP', 'eucJP']
    ['Korean', 'ko_KR', 'eucKR']
    ['Lithuanian', 'lt_LT', 'ISO8859-13']
    ['Norwegian', 'no_NO', 'ISO8859-1']
    ['Polish', 'pl_PL', 'ISO8859-2']
    ['Portuguese', 'pt_PT', 'ISO8859-1']
    ['Romanian', 'ro_RO', 'ISO8859-2']
    ['Russian', 'ru_RU', 'ISO8859-5']
    ['Sinhala', 'si_LK', 'UTF-8']
    ['Slovak', 'sk_SK', 'ISO8859-2']
    ['Slovenian', 'sl_SI', 'ISO8859-2']
    ['Spanish', 'es_ES', 'ISO8859-1']
    ['Swedish', 'sv_SE', 'ISO8859-1']
    ['Thai', 'th_TH', 'ISO8859-11']
    ['Turkish', 'tr_TR', 'ISO8859-9']
    Maintenant, on applique avec, par exemple, l'affichage de la date du jour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # application: affichage de la date du jour
    lcl = locale.getlocale() # sauvegarde de la locale courante
     
    date = datetime.datetime.now()
    for langage, lgg, enc in LW:
        locale.setlocale(locale.LC_ALL, langage)
        d = date.strftime(u'%c -- %x -- %X -- %B -- %A')
        try:
            print langage, enc, d.decode(enc)
        except:
            print langage, enc, d
            # exception: Japanese eucJP (japonais) et Sinhala UTF-8 (cingalais)
     
    locale.setlocale(locale.LC_ALL, lcl) # restauration de la locale initiale
    Ce qui donne:

    Arabic ISO8859-6 18/11/1434 09:42:50 ص -- 18/11/1434 -- 09:42:50 ص -- سبتكبر -- افثفاثاء
    Bulgarian CP1251 24.9.2013 г. 09:42:50 ч. -- 24.9.2013 г. -- 09:42:50 ч. -- септември -- вторник
    Catalan ISO8859-1 24/09/2013 09:42:50 -- 24/09/2013 -- 09:42:50 -- setembre -- dimarts
    Croatian ISO8859-2 24.9.2013. 9:42:50 -- 24.9.2013. -- 9:42:50 -- rujan -- utorak
    Czech ISO8859-2 24.9.2013 9:42:50 -- 24.9.2013 -- 9:42:50 -- září -- úterý
    Danish ISO8859-1 24-09-2013 09:42:50 -- 24-09-2013 -- 09:42:50 -- september -- tirsdag
    Dutch ISO8859-1 24-9-2013 9:42:50 -- 24-9-2013 -- 9:42:50 -- september -- dinsdag
    English ISO8859-1 9/24/2013 9:42:50 AM -- 9/24/2013 -- 9:42:50 AM -- September -- Tuesday
    Estonian ISO8859-1 24.09.2013 9:42:50 -- 24.09.2013 -- 9:42:50 -- september -- teisipäev
    Finnish ISO8859-1 24.9.2013 9:42:50 -- 24.9.2013 -- 9:42:50 -- syyskuu -- tiistai
    French ISO8859-1 24/09/2013 09:42:50 -- 24/09/2013 -- 09:42:50 -- septembre -- mardi
    Galician ISO8859-1 24/09/2013 9:42:50 -- 24/09/2013 -- 9:42:50 -- setembro -- martes
    German ISO8859-1 24.09.2013 09:42:50 -- 24.09.2013 -- 09:42:50 -- September -- Dienstag
    Greek ISO8859-7 24/9/2013 9:42:50 πμ -- 24/9/2013 -- 9:42:50 πμ -- Σεπτέμβριος -- Τρίτη
    Hebrew ISO8859-8 24/09/2013 09:42:50 -- 24/09/2013 -- 09:42:50 -- ספטמבר -- יום*שלישי
    Hungarian ISO8859-2 2013.09.24. 9:42:50 -- 2013.09.24. -- 9:42:50 -- szeptember -- kedd
    Icelandic ISO8859-1 24.9.2013 09:42:50 -- 24.9.2013 -- 09:42:50 -- september -- þriðjudagur
    Italian ISO8859-1 24/09/2013 09:42:50 -- 24/09/2013 -- 09:42:50 -- settembre -- martedì
    Japanese eucJP Japanese eucJP 2013/09/24 9:42:50 -- 2013/09/24 -- 9:42:50 -- 9�� -- �Ηj��
    Korean eucKR 2013-09-24 오전 9:42:50 -- 2013-09-24 -- 오전 9:42:50 -- 9월 -- 화요일
    Lithuanian ISO8859-13 2013.09.24 09:42:50 -- 2013.09.24 -- 09:42:50 -- rugsėjis -- antradienis
    Norwegian ISO8859-1 24.09.2013 09:42:50 -- 24.09.2013 -- 09:42:50 -- september -- tirsdag
    Polish ISO8859-2 2013-09-24 09:42:50 -- 2013-09-24 -- 09:42:50 -- wrzesień -- wtorek
    Portuguese ISO8859-1 24/09/2013 09:42:50 -- 24/09/2013 -- 09:42:50 -- setembro -- terça-feira
    Romanian ISO8859-2 24.09.2013 09:42:50 -- 24.09.2013 -- 09:42:50 -- septembrie -- marţi
    Russian ISO8859-5 24.09.2013 9:42:50 -- 24.09.2013 -- 9:42:50 -- бхэђџс№ќ -- тђю№эшъ
    Sinhala UTF-8 2013-09-24 9:42:50 ??.?. -- 2013-09-24 -- 9:42:50 ??.?. -- ??????????? -- ?????????
    Slovak ISO8859-2 24. 9. 2013 9:42:50 -- 24. 9. 2013 -- 9:42:50 -- september -- utorok
    Slovenian ISO8859-2 24.9.2013 9:42:50 -- 24.9.2013 -- 9:42:50 -- september -- torek
    Spanish ISO8859-1 24/09/2013 9:42:50 -- 24/09/2013 -- 9:42:50 -- septiembre -- martes
    Swedish ISO8859-1 2013-09-24 09:42:50 -- 2013-09-24 -- 09:42:50 -- september -- tisdag
    Thai ISO8859-11 24/9/2556 9:42:50 -- 24/9/2556 -- 9:42:50 -- กันยายน -- อังคาร
    Turkish ISO8859-9 24.09.2013 09:42:50 -- 24.09.2013 -- 09:42:50 -- Eylül -- Salı
    Il n'y a que 2 pays dont l'affichage n'est pas correct, parce que la tentative d'encodage en unicode génère une erreur:
    - Japanese eucJP (japonais)
    - Sinhala UTF-8 (cingalais)

    Si quelqu'un sait faire plus simple: son apport sera le bienvenu!!!

  9. #9
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour tyrtamos.

    Intéressant. Je vais utiliser ta méthode pour améliorer mon module date_use de mon package misTool sur PyPI pour traduire simplement les dates.

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    J'ai essayé de connaître les langages disponibles sous Windows. Je ne suis pas sûr d'avoir la "bonne" méthode, mais ça a l'air de marcher.
    Ça fonctionne mais...
    A défaut de pouvoir interroger l'OS pour savoir ce qu'il connaît, pourquoi ne pas partir d'une liste Windows?

    De toutes façons, Windows est peu respectueux des "standards".
    Partir d'une liste ISO avec des noms "bien construits" peut arriver nulle part et réciproquement.

    - 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: 14/12/2010, 09h23
  2. [OIS] Liste des joystick supportés
    Par Kromagg dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 18/04/2009, 16h51
  3. Liste des langues internet
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 2
    Dernier message: 15/07/2008, 15h14
  4. Liste des langues
    Par VolaiL dans le forum MySQL
    Réponses: 1
    Dernier message: 03/09/2007, 16h35
  5. Réponses: 6
    Dernier message: 05/06/2006, 22h59

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