Übersetzen von Pygobject -Anwendungen in verschiedene Sprachen - Teil 5
- 3744
- 1206
- Ilja Köpernick
Wir setzen die Pygobject -Programmierserie mit Ihnen und hier in diesem 5 Teil, wir lernen, wie Sie unsere Pygobject -Anwendungen in verschiedene Sprachen übersetzen können. Das Übersetzen Ihrer Anwendungen ist wichtig, wenn Sie sie für die Welt veröffentlichen möchten, ist es für Endbenutzer benutzerfreundlicher, da nicht jeder Englisch versteht.
Übersetzung von Pygobject -AnwendungsspracheWie der Übersetzungsprozess funktioniert
Wir können die Schritte zur Übersetzung eines Programms unter dem Linux -Desktop mit diesen Schritten zusammenfassen:
- Extrahieren Sie die übersetzbaren Zeichenfolgen aus der Python -Datei.
- Speichern Sie die Saiten in a .Topf Datei, das Format ist, mit dem Sie sie später in andere Sprachen übersetzen können.
- Beginnen Sie mit der Übersetzung der Saiten.
- Exportieren Sie die neuen übersetzten Saiten in a .po Datei, die automatisch verwendet wird, wenn die Systemsprache geändert wird.
- Fügen Sie der Hauptpython -Datei und der Hauptpython -Datei einige kleine programmatische Änderungen hinzu .Desktop Datei.
Und das ist es! Nach diesen Schritten ist Ihre Bewerbung für Endbenutzer aus aller Welt bereit !), Klingt einfach, nicht wahr?? :-)
Laden Sie zunächst die Projektdateien aus dem folgenden Link herunter und extrahieren Sie die Datei in Ihrem Home -Verzeichnis.
- https: // kopieren.com/tjyzaangeq6bb7yn
Öffne das "aufstellen.pyDatei und bemerken Sie die Änderungen, die wir vorgenommen haben:
Übersetzungscode# Hier haben wir das "Setup" -Modul importiert, mit dem wir Python -Skripte an dem lokalen System installieren können. Neben anderen Aufgaben finden Sie die Dokumentation hier: https: // docs.Python.org/2/distutils/apiref.HTML aus Distutils.Core Import Setup # Diese Module helfen uns beim Erstellen der Übersetzungsdateien für das Programm automatisch. Aus dem Subprozess -Importanruf von Globe Import GLOB vom Betriebssystem.Pfad importieren splitext, split # fotgetieren Sie nicht "MyProgram" durch den Namen Ihres Programms in jeder Datei in diesem Projekt. Data_files = [("lib/myProgram", ["UI.glade "]), # Dies wird die" UI "installieren.Glade "Datei unter dem Pfad/usr/lib/myProgram. ("Share/Anwendungen", ["MyProgramm.Desktop"])] # Dieser Code macht alles, was für das Erstellen der Übersetzungsdateien benötigt wird. Zuerst wird nach allen gesucht .PO -Dateien im Ordner PO, dann definiert er den Standardpfad für die Installation der Übersetzungsdateien (.MO) Auf dem lokalen System wird es dann das Verzeichnis auf dem lokalen System für die Übersetzungsdateien unseres Programms erstellen und schließlich alle konvertieren alle .PO -Dateien in .MO -Dateien mit dem Befehl "msgfmt" verwenden. po_files = glob ("po/*.po ") für po_file in po_files: Lang = splitext (split (po_file) [1]) [0] Mo_Path =" Locale//lc_messages/MyProgram.MO ".Format (Lang) # Machen Sie Lokale Verzeichnisse auf.Format (lang), Shell = true) # MO -Dateien generieren ("msgfmt -o ".Format (PO_FILE, MO_PATH), Shell = True) Orte = MAP (Lambda I: ('Share/'+I, [i+'/MyProgram.Mo ',]), Glob (' Lokale/*/lc_messages ') # Hier fügt der Installationsprogramm automatisch die hinzu .Mo -Dateien zu den Datendateien, um sie später zu installieren. Datei.Erweitern Sie (Orte) Setup (name = "MyProgramm", # Name des Programms. Version = "1.0", # Version des Programms. Beschreibung = "Eine benutzerfreundliche Weboberfläche zum Erstellen und Freigeben von Pasten einfach", # Sie brauchen hier keine Hilfe. Autor = "Tecmint", # Noch hier. Author_email = "[E -Mail geschützt]",# Noch hier: d url ="http: // Beispiel.com", # Wenn Sie eine Website für Ihr Programm haben ... setzen Sie sie hier. Lizenz = 'GPLV3', # Die Lizenz des Programms. Skripte = ['MyProgramm'], # Dies ist der Name der Haupt -Python -Skriptdatei, in unserem Fall ist es "MYPROGRAM". # Hier können Sie auswählen, wo Sie Ihre Dateien auf dem lokalen System installieren möchten. Die Datei "Myprogram" wird später automatisch an der richtigen Stelle installiert, sodass Sie nur auswählen müssen, wo Sie die optionalen Dateien installieren möchten, die Sie Form mit der Python -Skript data_files = data_files) # und dies wird die installieren .Desktop -Datei unter dem Ordner/usr/share/applications -Ordner, der gesamte Ordner wird automatisch unter dem Ordner/usr in Ihrer Stammpartition installiert. Sie müssen nicht "/usr/zum Pfad" hinzufügen.
Öffne auch die “MyProgrammDatei und sehen Sie die programmatischen Änderungen, die wir vorgenommen haben. Alle Änderungen werden in den Kommentaren erklärt:
#!/usr/bin/python #-*-Codierung: UTF-8-*-## Ersetzen Sie Ihren Namen und Ihre E-Mail. # Mein Name <[email protected]> ## Hier müssen Sie die Lizenz der Datei hinzufügen, "MyProgram" durch Ihren Programmnamen ersetzen. # Lizenz: # MyProgram ist kostenlose Software: Sie können es neu verteilt und/oder # IT unter den Bedingungen der GNU General Public Lizenz wie von # The Free Software Foundation, entweder Version 3 der Lizenz oder # (nach Ihrer Option "veröffentlicht. ) Jede spätere Version. # # MyProgram wird in der Hoffnung verteilt, dass es nützlich sein wird, #, aber ohne Garantie; Ohne die implizite Garantie für die Handelsfähigkeit oder Fitness für einen bestimmten Zweck. Weitere Informationen finden Sie in der # GNU General Public Lizenz. # # Sie sollten zusammen mit MyProgram eine Kopie der GNU General Public Lizenz # erhalten haben. Wenn nicht, siehe . von gi.Repository -Import GTK -Import -Betriebssystem, GetText, Lokale ## Dies ist die programmatische Änderung, die Sie zur Python -Datei hinzufügen müssen. Ersetzen Sie einfach "MYPROGRAM" durch den Namen Ihres Programms. Die Module "Gebietsschema" und "GetText" werden sich um den Rest des Betriebs kümmern. Gebietsschema.Setlocale (Gebietsschema.Lc_all, ") GetText.BindTextDomain ('MyProgram', '/usr/Share/Locale') GetTeText.textdomain ('myProgram') _ = getText.GetText GetText.Installieren ("Myprogram", "/usr/Share/Lokale") Klassenhandler: Def openterminal (Selbst, Schaltfläche): ## Wenn der Benutzer auf die erste Schaltfläche klickt, wird das Terminal geöffnet. Betriebssystem.System ("X-terminaler Emulator") Def-Clinker (Selbst, Taste): GTK.Main_quit () # Nichts Neues hier… wir haben gerade die 'UI importiert.Glade -Datei. Builder = gtk.Builder () Builder.add_from_file ("/usr/lib/myProgram/ui.Glade ") Erbauer.Connect_signals (Handler ()) Label = Builder.Get_Object ("Label1") # Hier ist eine weitere kleine Änderung, anstatt den Text festzulegen ("Willkommen in meinem Testprogramm!") Wir müssen ein" _ "-Felger vorher hinzufügen, um den zuständigen Skripten über den Übersetzungsprozess zu erkennen, dass es sich um eine übersetzbare Zeichenfolge handelt. Etikett.set_text (_ ("Willkommen in meinem Testprogramm !")) Button = Builder.get_object ("button2") # und hier ist dasselbe ... Sie müssen dies für alle Texte in Ihrem Programm tun, woanders werden sie nicht übersetzt werden. Taste.set_label (_ ("Klicken Sie auf mich, um das Terminal zu öffnen")) Fenster = Builder.Get_Object ("Fenster1") Fenster.Connect ("Delete-Event", GTK.Main_quit) Fenster.show_all () gtk.hauptsächlich()
Jetzt ... beginnen wir mit der Übersetzung unseres Programms. Erstellen Sie zuerst die .Topf Datei (eine Datei, die alle übersetzbaren Zeichenfolgen im Programm enthält), damit Sie
kann mit dem folgenden Befehl übersetzen:
$ CD MYPROGRAM $ XGETTEXT -Sprache = Python -Keeyword = _ -o PO/MYPROGRAM.Pot MyProgramm
Dies wird das erstellen “MyProgramm.Topf"Datei in der"poOrdner im Hauptprojektordner, der den folgenden Code enthält:
# Ein beschreibender Titel. # Copyright (c) Jahr Der Copyright -Inhaber des Pakets # Diese Datei wird unter derselben Lizenz wie das Paketpaket verteilt. # Erster Autor <[email protected]>, JAHR. # #, Fuzzy MSGID "" MSGSTR "" "Projekt-ID-Version: Paketversion \ n" "Report-MSGID-Bugs-to: \ n" "Pot-Creation-Datum: 2014-12-29 21: 28+ 0200 \ n "" po-revision-date: Jahr-mo-da Ho: Mi+Zone \ n "" Last-Translator: Vollständiger Name <[email protected]>\ n "" Sprachteam: Sprache <[email protected]>\ n "" Sprache: \ n "" Mime-Version: 1.0 \ n "" Inhaltstyp: Text/Ebene; charset = charset \ n "" Inhaltsübertragungskodierung: 8bit \ n " #: MyProgram: 48 msgid" Willkommen in meinem Testprogramm !"MSGSTR" " #: MYPROGRAM: 52 MSGID" Klicken Sie auf mich, um das Terminal "msgstr" zu öffnen
Um die Zeichenfolgen zu übersetzen, erstellenISO-639-1"Sprachencodes im"poOrdner zum Beispiel, wenn Sie Ihr Programm auf übersetzen möchten Arabisch, Erstellen Sie eine Datei namens “ar.po"Und kopieren Sie den Inhalt aus dem"MyProgramm.Topf”Datei dazu.
Wenn Sie Ihr Programm auf übersetzen möchten Deutsch, ein ... kreieren "de.poDatei Datei und kopieren Sie den Inhalt aus dem “MyProgramm.TopfDatei darauf… und so müssen Sie eine Datei für jede Sprache erstellen, in die Sie Ihr Programm übersetzen möchten.
Jetzt werden wir an der “arbeiten“ar.poDatei, kopieren Sie den Inhalt aus dem “MyProgramm.TopfDatei und stecken Sie sie in diese Datei und bearbeiten Sie Folgendes:
- Ein beschreibender Titel: Sie können hier den Titel Ihres Projekts eingeben, wenn Sie möchten.
- Jahr der Urheberrechtsinhaber des Pakets: Ersetzen Sie es durch das Jahr, in dem Sie das Projekt erstellt haben.
- PAKET: Ersetzen Sie es durch den Namen des Pakets.
- Erster Autor <[email protected]>, JAHR: Ersetzen Sie dies durch Ihren richtigen Namen, Ihre E -Mail und das Jahr, in dem Sie die Datei übersetzt haben.
- Paketversion: Ersetzen Sie es durch die Paketversion aus der Debian/Control -Datei.
- Jahr-mo-da Ho: Mi+Zone: braucht keine Erklärung, Sie können es auf ein gewünschtes Datum ändern.
- VOLLSTÄNDIGER NAME <[email protected]>: Ersetzen Sie es auch Ihren Namen und Ihre E -Mail.
- Sprachteam: Ersetzen Sie es durch den Namen der Sprache, in die Sie übersetzen, zum Beispiel "Arabisch" oder "Französisch".
- Sprache: Hier müssen Sie den ISO-639-1-Code für die Sprache einfügen, in die Sie übersetzen, beispielsweise „AR“, „FR“, „DE“… usw. Sie können hier eine vollständige Liste finden.
- Charset: Dieser Schritt ist wichtig, ersetzen Sie diese Zeichenfolge durch „UTF-8“ (ohne die Zitate), die die meisten Sprachen unterstützt.
Beginnen Sie nun übersetzen! Fügen Sie Ihre Übersetzung für jede Zeichenfolge nach den Zitaten in “hinzu“Msgstr”. Speichern Sie die Datei und beenden Sie. Eine gute Übersetzungsdatei für die
Die arabische Sprache als Beispiel sollte so aussehen:
# Mein Programm # Copyright (C) 2014 # Diese Datei ist unter derselben Lizenz wie das MyProgram -Paket verteilt. # Hanny Helal <[email protected]<, 2014. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 1.0 \ n"" Report-Msgid-Bugs-to: \ n "" Pot-Creation-Datum: 2014-12-29 21: 28+0200\ n "" po-Revision-Datum: 2014-12-29 22: 28+0200\ n "" Last-Translator: M.Hanny Sabbagh\ n "" Sprachteam: Arabisch <[email protected]<\ n "" Sprache: ar \n "" Mime-Version: 1.0\ n "" Inhaltstyp: Text/Ebene; charset = utf-8\ n "" Content-Transfer-Codierung: 8 Bit\ n " #: MYPROGRAM: 48 MSGID"Willkommen in meinem Testprogramm !"MSGSTR"أasiers!" #: MYPROGRAM: 52 MSGID"Klicken Sie auf mich, um das Terminal zu öffnen"MSGSTR"اضغط عليّ لفun"
Es gibt nichts mehr zu tun. Verpacken Sie das Programm einfach mit dem folgenden Befehl:
$ debuild -us -uc
Versuchen Sie nun, das neu erstellte Paket mit dem folgenden Befehl zu installieren.
$ sudo dpkg -i myprogram_1.0_all.Deb
Und ändern Sie die Systemsprache mit der “SprachunterstützungProgramm oder ein anderes Programm zu verwenden, um Arabisch (oder die Sprache, in die Sie Ihre Datei übersetzt haben):
SprachunterstützungNach der Auswahl wird Ihr Programm in die arabische Sprache übersetzt.
Übersetzt auf ArabischHier endet unsere Serie über Pygobject -Programmierung für den Linux -Desktop. Natürlich gibt es viele andere Dinge, die Sie aus der offiziellen Dokumentation und der Python GI -API -Referenz lernen können
Was denkst du über die Serie?? Finden Sie es nützlich?? Konnten Sie Ihre erste Anwendung erstellen, indem Sie dieser Serie folgen? Teile uns deine Gedanken!
- « So verwalten Sie KVM -Speichervolumina und Pools für virtuelle Maschinen - Teil 3
- So erstellen Sie GUI -Anwendungen unter Linux -Desktop mit PyGObject - Teil 1 »