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

GTK+ avec Python Discussion :

Problème de traductions après passage a gtkbuilder


Sujet :

GTK+ avec Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Points : 27
    Points
    27
    Par défaut Problème de traductions après passage a gtkbuilder
    Bonjour,

    Actuellement je suis en train de convertir un logiciel utilisant libglade vers gtkbuilder, en prévision desd prochaines version de gnome. Tout fonctionne parfaitement excepté une chose : les traductions.

    En effet je n'arrive toujours pas à me passer de libglade pour charger les traductions et ne vois pas comment faire pour migrer le tout vers gtkbuilder.

    Voila mon code pour la traduction :
    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
    # import modules needed for language translation & gtk support
    import os, sys
    import gettext, locale
    import gtk, gtk.glade
     
     
    ########################################################################
    class Translator:
    	"""Class that contains functions to initiate language translations"""  
     
    	#----------------------------------------------------------------------
    	def __init__(self, project):
    		"""Constructor"""  
    		self.project = project
     
    		# Setup foreign language support
    		langs = []
    		lc, encoding = locale.getdefaultlocale()
     
    		if (lc):
    			langs = [lc]			
    		language = os.environ.get('LANGUAGE', None)
    		if (language):
    			langs += language.split(":")
    		# Add languages... for testing
    		#langs += ["es", "fr"]
     
    		gtk.glade.textdomain("OpenShot")
    		gtk.glade.bindtextdomain("OpenShot", self.project.LOCALE_DIR)
     
    		gettext.textdomain("OpenShot")
    		gettext.bindtextdomain("OpenShot", self.project.LOCALE_DIR)
     
    		gettext.install(domain="OpenShot", unicode = True, codeset = 'utf-8')
     
    		# This reference is used by other classes to define the _ method 
    		self.lang = gettext.translation("OpenShot", self.project.LOCALE_DIR, languages = langs, fallback = True)
    Et voilà comment je l'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # Add language support
    		_ = Language_Init.Translator(project).lang.gettext
    		self._ = _
    Est ce que quelqu'un voit comment faire ? Je suis sûr que c'est une astuce stupide mais je n'ai trouvé aucun exemple.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Ca m'a l'air compliqué ce que tu fais... Je pense qu'il suffit de faire en sorte que les traductions fonctionnent dans ton programme Python (ie y a 2 ou 3 fonctions gettext à appeler) et d'utiliser intltool pour gérer les traductions de tes fichiers GtkBuilder et tout devrait rouler.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Points : 27
    Points
    27
    Par défaut
    Disons que pour l'instant, j'aimerais ne pas trop toucher à l'organisation du code (project collaboratif, je ne suis pas le seul à décider, c'est openshot video pour ceux qui connaissent).

    La simplification du code fera l'objet d'une autre branche :p

    En fait il n'y a que ces deux lignes qui posent problemes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtk.glade.textdomain("OpenShot")
    		gtk.glade.bindtextdomain("OpenShot", self.project.LOCALE_DIR)
    J'ai essayé avec la propriété set_translation_domain de gtkbuilder de supprimer ces lignes et n'utiliser que gettext mais rien ne fonctionne.

    En tout cas merci de ta réponse rapide mais je sais que gtkbuilder implémente les traductions de façon simple et je cherche juste comment l'utiliser

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Points : 27
    Points
    27
    Par défaut
    Finalement j'ai trouvé, je savais que c'étais tout bête.

    Suffisait de remplacer les deux lignes génantes par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    locale.setlocale(locale.LC_ALL)
    Et tout fonctionne

Discussions similaires

  1. [AC-2010] problème sous 2010 après passage de 2003
    Par electrosat03 dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/11/2012, 20h49
  2. Problème après "passage" en xhtml1.0
    Par Becafuel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/12/2005, 15h19
  3. Réponses: 1
    Dernier message: 28/10/2005, 10h37
  4. Problème très rapide de passage par référence
    Par Noxexplorer dans le forum ASP
    Réponses: 2
    Dernier message: 23/06/2005, 11h02
  5. Problèmes d'espaces après requete SQL
    Par innosang dans le forum Bases de données
    Réponses: 7
    Dernier message: 29/04/2004, 17h47

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