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 :

Traduire une combobox PyQt5/Sqlite


Sujet :

PyQt Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut Traduire une combobox PyQt5/Sqlite
    Bonjour,

    Je viens ici car je rencontre une (nouvelle) difficulté pour traduire une application en PyQt5/Sqlite.

    Je dirai que la traduction fonctionne bien dans son ensemble, j'utilise QTranslator couplé avec QtLinguist et la fonction translate

    Là où je rencontre un soucis concerne une petite partie du logiciel, en effet je vais chercher, entre autre, le contenu des listes combobox dans une base sqlite et je n'arrive pas à traduire ces textes. (que j'insère à l'initialisation du sqlite)

    En effet, j'aimerai que la liste d'informations soient toujours stockées en anglais dans la base de données et que la traduction se fasse par la suite via l'outil de traduction.
    Donc pour moi, j'ai 2 contraintes
    * ne pas stocker d'informations en langue locale
    * avoir les données dans le fichier sqlite afin d'être toujours indépendant du programme

    J'espère que mon explication est claire,

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Ce que tu veux faire n'est pas possible.

    QTranslator fonctionne de la façon suivante
    • on extrait des sources l'ensemble des strings (je me souviens plus la commande mais c'est du détail). Ca génère un fichier XML contenant les chaines à traduire. Pour que le logiciel trouve ces chaines, elles doivent avoir été insérées dans tes sources PyQt via la fonction tr() ou sa grande soeur translate(). Donc si tu veux traduire un label "Hello" faut que tu écrives QLabel(translate("nom_du_source", "Hello", "note pour le traducteur")).
    • on lance le logiciel linguist en lui donnant le XML à bouffer. Ca ouvre une page avec à gauche la chaine à traduire et à droite la traduction. Sauf que c'est à toi (ou à un traducteur) d'écrire cette traduction. Pour ça il est aidé de la note que tu as donné en 3° paramètre. Ensuite tu fermes le XML qui deviendra la traduction dans la langue X. Donc si tu veux avoir 15 langues différentes, faut refaire 15 fois cette manip en enregistrant chaque fois le XML une fois traduit
    • enfin dans ton QAppli, tu installes l'un ou l'autre XML via QTranslator. A ce moment là, l'appli basculera dans la langue dudit XML


    Comme tu vois, une traducion d'un programme Qt offre ben l'indépendance que tu cherches (les strings sont à part et on n'est même pas obligé de tout traduire pour que ça marche, les chaines non traduites restent alors dans la langue d'origine et on peut y revenir plus tard) mais sont d'une part liées à l'utilisation d'outils spécifiques Qt, et d'autre part liés à une action humaine de traduction. Et toi tu arrives avec tes textes stockés dans sqlite et tu voudrais qu'ils soient automatiquement traduits ? Tu crois que Qt c'est google translate ?

    Alors certes il existe dans Qt des fichiers déjà tout faits de traduction qu'on peut injecter en plus des notres mais ces fichiers ne traduisent que des textes comme Yes/No/Cancel/Abort etc qu'on trouve dans les boites de dialogues de Qt.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Et toi tu arrives avec tes textes stockés dans sqlite et tu voudrais qu'ils soient automatiquement traduits ? Tu crois que Qt c'est google translate ?
    Bonjour,

    Je ne m'attends pas à ce que Qt traduise tout de lui même, je cherchais juste une astuce pour traduire des textes qui sont stockés dans une bdd et utilisé pour générer l'interface graphique.

    Finalement, j'ai contourné le problème pour régler la situation.
    J'utilise simplement un dictionnaire (stocké dans un fichier json) qui traduit mes chaînes de caractères (à la création des combobox) en prenant comme clef le nom de la langue locale.

    pour traduire ces combobox, je n'utilise donc plus QtLinguist, mais simplement un éditeur de texte pour modifier le fichier .json

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [TStringGrid] intégrer une ComboBox
    Par AnneOlga dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/10/2004, 15h46
  3. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30
  4. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 15h26

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