Traduction d'applications pygobject en différentes langues - Partie 5

Traduction d'applications pygobject en différentes langues - Partie 5

Nous continuons la série de programmes PygObject avec vous et ici dans ce 5e partie, nous apprendrons à traduire nos applications pygobject dans différentes langues. Traduire vos applications est important si vous allez le publier pour le monde, il sera plus convivial pour les utilisateurs finaux, car tout le monde ne comprend pas l'anglais.

Traduction du langage de l'application PygObject

Comment fonctionne le processus de traduction

Nous pouvons résumer les étapes de la traduction d'un programme sous le bureau Linux en utilisant ces étapes:

  1. Extraire les chaînes traduites du fichier Python.
  2. Enregistrez les cordes dans un .pot Fichier qui est un format qui vous permet de le traduire plus tard dans d'autres langues.
  3. Commencer à traduire les cordes.
  4. Exporter les nouvelles chaînes traduites en un .pote fichier qui sera automatiquement utilisé lorsque le langage système est modifié.
  5. Ajoutez quelques petites modifications programmatiques dans le fichier Python principal et le .bureau déposer.

Et c'est tout! Après avoir fait ces étapes, votre application sera prête à être utilisée pour les utilisateurs finaux du monde entier (vous devez… vous devez traduire votre programme dans toutes les langues du monde !), Ça semble facile n'est-ce pas? :-)

Tout d'abord, pour gagner du temps, téléchargez les fichiers du projet à partir du lien ci-dessous et extraire le fichier dans votre répertoire domestique.

  1. https: // copier.com / tjyzaangeq6bb7yn

Ouvrez le «installation.py»Fixez et remarquez les modifications que nous avons apportées:

Code de traduction
# Ici, nous avons importé le module «Configuration» qui nous permet d'installer des scripts Python sur le système local en plus d'effectuer d'autres tâches, vous pouvez trouver la documentation ici: https: // docs.python.org / 2 / distutils / apiref.HTML des distutiles.Configuration de l'importation de base # Ces modules nous aideront à créer automatiquement les fichiers de traduction du programme. de l'appel d'importation de sous-processus de Glob Import Glob à partir du système d'exploitation.PATH IMPORT SPLITEXT, Split # Ne pas Fotget pour remplacer `` MyProgram '' par le nom de votre programme dans chaque fichier de ce projet. data_files = [("lib / myprogram", ["ui.Glade "]), # Cela va installer" l'interface utilisateur.Fichier de glace sous le chemin / USR / lib / myprogram Path. ("Partage / Applications", ["myprogram.bureau"])] # Ce code fait tout ce qui est nécessaire pour créer les fichiers de traduction, d'abord il recherchera tous les .Fichiers PO dans le dossier PO, puis il définira le chemin par défaut pour installer les fichiers de traduction (.mo) Sur le système local, puis il va créer le répertoire sur le système local pour les fichiers de traduction de notre programme et enfin il va convertir tout le .PO fid dans .Fichiers MO à l'aide de la commande "msgfmt". po_files = glob ("po / *.po ") pour po_file dans po_files: lang = splitext (Split (po_file) [1]) [0] mo_path =" Locale /  / lc_messages / myProgram.MO ".Format (Lang) # Répertoriez les répertoires locaux ("Mkdir -P Locale /  / LC_MESSAGES /".format (lang), shell = true) # générer des fichiers mo d'appel ("msgfmt  -o ".format (po_file, mo_path), shell = true) localités = map (lambda i: ('partager /' + i, [i + '/ myprogram.mo ',]), glob (' Locale / * / lc_messages ')) # Ici, l'installateur ajoutera automatiquement le .MO Fichiers dans les fichiers de données pour les installer plus tard. fichiers de données.Extension (Lieux) Configuration (name = "myprogram", # Nom du programme. version = "1.0", # Version du programme. description = "Une interface Web facile à utiliser pour créer et partager facilement des pâtes", # Vous n'avez pas besoin d'aide ici. auteur = "Tecmint", # Ni ici. auteur_email = "[Protégé par e-mail]", # Ni ici: d url ="http: // Exemple.com", # Si vous avez un site Web pour votre programme ... mettez-le ici. Licence = 'Gplv3', # La licence du programme. scripts = ['myprogram'], # C'est le nom du fichier de script Python principal, dans notre cas, c'est "MyProgram", c'est le fichier que nous avons ajouté dans le dossier "MyProgram". # Ici, vous pouvez choisir où souhaitez-vous installer vos fichiers sur le système local, le fichier "myProgram" sera automatiquement installé à son endroit correct plus tard, vous n'avez donc qu'à choisir où vous souhaitez installer les fichiers facultatifs que vous forme avec le script python data_files = data_files) # et cela va installer le .Fichier de bureau Dans le dossier / usr / share / applications, tout le dossier est automatiquement installé sous le dossier / usr dans votre partition racine, vous n'avez pas besoin d'ajouter "/ usr / sur le chemin. 

Ouvrez également le «myprogram”Fixer et voir les modifications programmatiques que nous avons apportées, toutes les modifications sont expliquées dans les commentaires:

#!/ usr / bin / python # - * - codage: UTF-8 - * - ## Remplacez votre nom et votre e-mail. # Mon nom <[email protected]> ## Ici, vous devez ajouter la licence du fichier, remplacer "myProgram" par le nom de votre programme. # Licence: # MyProgram est un logiciel gratuit: vous pouvez le redistribuer et / ou le modifier # It sous les termes de la licence publique générale GNU telle que publiée par # The Free Software Foundation, soit la version 3 de la licence, ou # (à votre option ) Toute version ultérieure. # # MyProgram est distribué dans l'espoir qu'il sera utile, # mais sans aucune garantie; sans même la garantie implicite de # # marchand ou d'aptitude à un usage particulier. Voir la licence publique générale # GNU pour plus de détails. # # Vous auriez dû recevoir une copie de la licence publique générale GNU # avec MyProgram. Sinon, voir . de Gi.Référentiel Import GTK Import OS, getText, Locale ## C'est le changement programmatique que vous devez ajouter au fichier Python, remplacez simplement "MyProgram" par le nom de votre programme. Les modules "Locale" et "GetText" prendront soin du reste de l'opération. lieu.setlocale (paramètres régionaux.Lc_all, ") getText.BindTextDomain ('MyProgram', '/ USR / Share / Locale') GetText.TextDomain ('myProgram') _ = getText.getText getText.installer ("myProgram", "/ usr / share / local") Handler de classe: def openterminal (self, bouton): ## Lorsque l'utilisateur clique sur le premier bouton, le terminal sera ouvert. OS.Système ("X-Emulator") DEF CloseProgram (Self, Button): GTK.main_quit () # rien de nouveau ici… nous venons d'importer l'interface utilisateur.Fichier Glade. constructeur = gtk.Constructeur () constructeur.add_from_file ("/ usr / lib / myprogram / ui.Glade ") constructeur.Connect_Signals (Handler ()) Label = Builder.get_object ("Label1") # Voici une autre petite modification, au lieu de définir le texte sur ("Bienvenue à mon programme de test!") Nous devons ajouter un char" _ "avant lui afin de permettre aux scripts responsables sur le processus de traduction pour reconnaître qu'il s'agit d'une chaîne traduisible. étiqueter.set_text (_ ("Bienvenue à mon programme de test !")) Button = Builder.get_object ("Button2") # et voici la même chose… vous devez le faire pour tous les textes de votre programme, ailleurs, ils ne seront pas traduits. bouton.set_label (_ ("Cliquez sur moi pour ouvrir le terminal")) Window = Builder.fenêtre get_object ("window1").connecter ("Delete-Event", GTK.Fenêtre Main_Quit).show_all () gtk.principal() 

Maintenant… commençons à traduire notre programme. Créez d'abord le .pot fichier (un fichier qui contient toutes les chaînes traduisibles du programme) afin que vous
peut commencer à traduire en utilisant la commande suivante:

$ cd myprogram $ xgetText --Language = python --keyword = _ -o po / myProgram.Pot Myprogram 

Cela va créer le «myprogram.pot»Fichier à l'intérieur du«pote”Dossier dans le dossier principal du projet qui contient le code suivant:

# Un titre descriptif. # Copyright (c) année Le titulaire du coopyright du package # Ce fichier est distribué sous la même licence que le package du package. # Premier auteur <[email protected]>, ANNÉE. # #, Fuzzy msgid "" msgstr "" "Project-ID-Version: Package version \ n" "RAPPORT-MSGID-BUGS-TO: \ n" "Pot-Creation-Date: 2014-12-29 21: 28+ 0200 \ n "" Po-révision-date: an-mo-da ho: mi + zone \ n "" Last-Translateur: Nom complet <[email protected]>\ n "" Langue-équipe: langue <[email protected]>\ n "" Langue: \ n "" MIME-Version: 1.0 \ n "" Type de contenu: texte / plaine; Charset = Charset \ n "" Content-Transfer-Encoding: 8bit \ n "#: MyProgram: 48 MSGID" Bienvenue dans mon programme de test !"msgstr" "#: myProgram: 52 msgid" Cliquez sur moi pour ouvrir le terminal "MSGSTR" " 

Maintenant, afin de commencer à traduire les chaînes… Créez un fichier séparé pour chaque langue que vous souhaitez traduire votre programme en utilisant le «ISO-639-1"Les langues codes à l'intérieur du"pote”Dossier, par exemple, si vous souhaitez traduire votre programme arabe, Créer un fichier appelé "ardente.pote»Et copiez le contenu du«myprogram.pot»Fichier à celui-ci.

Si vous souhaitez traduire votre programme en Allemand, créer un "de.pote«Fixer et copier le contenu du«myprogram.pot"Fichier à celui-ci… et donc un, vous devez créer un fichier pour chaque langue que vous souhaitez traduire votre programme.

Maintenant, nous travaillerons sur le «ardente.pote«Fichier, copiez le contenu du«myprogram.pot”Fichier et mettez-le dans ce fichier et modifiez ce qui suit:

  1. Un titre descriptif: vous pouvez saisir le titre de votre projet ici si vous voulez.
  2. Année le détenteur du droit d'auteur du package: Remplacez-le par l'année où vous avez créé le projet.
  3. EMBALLER: le remplacer par le nom du package.
  4. Premier auteur <[email protected]>, ANNÉE: remplacez-le par votre vrai nom, e-mail et l'année où vous avez traduit le fichier.
  5. Version de package: Remplacez-le par la version du package à partir du fichier Debian / Control.
  6. Année-MO-DA HO: MI + ZONE: n'a pas besoin d'explication, vous pouvez le changer à n'importe quelle date que vous souhaitez.
  7. NOM ET PRÉNOM <[email protected]>: Remplacez-le également votre nom et votre e-mail.
  8. Équipe de langue: Remplacez-le par le nom de la langue que vous traduisez, par exemple «arabe» ou «français».
  9. Langue: Ici, vous devez insérer le code ISO-639-1.
  10. Charbon: Cette étape est importante, remplacez cette chaîne par «UTF-8» (sans les citations) qui prend en charge la plupart des langues.

Maintenant, commencez à traduire! Ajoutez votre traduction pour chaque chaîne après les citations dans "msgstr". Enregistrer le fichier et quitter. Un bon fichier de traduction pour le
La langue arabe comme exemple devrait ressembler à ceci:

# Mon programme # Copyright (C) 2014 # Ce fichier est distribué sous la même licence que le package MyProgram. # Hanny Helal <[email protected]<, 2014. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 1.0 \ n"" Report-msgid-bugs-to: \ n "" Pot-Creation-Date: 2014-12-29 21: 28 + 0200\ n "" Po-révision-date: 2014-12-29 22: 28 + 0200\ n "" Last-Translateur: M.Hanny Sabbagh \ n "" Engrammage linguistique: arabe <[email protected]<\ n "" Langue: ar \n "" MIME-Version: 1.0\ n "" Type de contenu: texte / plaine; Charset = UTF-8\ n "" Contenu-transfert-codage: 8 bits\ n "#: myProgram: 48 msgid"Bienvenue dans mon programme de test !"MSGSTR"أهلًا بك إلى برنامجي الاختباري!"#: MyProgram: 52 msgid"Cliquez sur moi pour ouvrir le terminal"MSGSTR"اضغط عليّ لفتح الطرفية" 

Il n'y a rien de plus à faire, il suffit d'emballer le programme en utilisant la commande suivante:

$ debuild -us -uc 

Essayez maintenant d'installer le nouveau package créé en utilisant la commande suivante.

$ sudo dpkg -i myprogram_1.0_.deb 

Et modifier le langage du système en utilisant le «Support linguistique«Programme ou utilisant tout autre programme pour arabe (ou la langue auquel vous avez traduit votre fichier):

Support linguistique

Après avoir sélectionné, votre programme sera traduit en langue arabe.

Traduit en arabe

Ici, nous termine notre série sur la programmation PygObject pour le bureau Linux, bien sûr, il y a beaucoup d'autres choses que vous pouvez apprendre de la documentation officielle et de la référence de l'API GI Python…

Que pensez-vous de la série? Le trouvez-vous utile? Avez-vous pu créer votre première application en suivant cette série? Partagez-nous vos pensées!