Mit können Sie entweder das systemweite Standardgebietsschemaverzeichnis verwenden oder eines davon mithilfe von bindtextdomain
angeben. Dies ist nützlich, wenn ein Programm direkt von der Quelle ausgeführt wird, wenn die kompilierten .mo-Übersetzungsdateien nicht im Standardspeicherort des Systems verfügbar sind.So binden Sie eine Textdomäne unter GTK3 für gettext an
In Python Sie würden dies tun:
import gettext
from gettext import gettext as _
gettext.bindtextdomain('nautilus-image-manipulator', '/path/to/mo/folder')
gettext.textdomain('nautilus-image-manipulator')
wo /path/to/mo/folder
die bekannte fr/LC_MESSAGES/nautilus-image-manipulator.mo
Struktur enthält. Anrufe wie folgt aus:
print _("Delete this profile")
Rückkehr der richtig übersetzt Zeichenfolge von den lokalen .mo Dateien, ich danke Ihnen sehr.
In GTK + 2/pygtk gab es gtk.glade.bindtextdomain
, aber ich frage mich, ob es gleichwertige in GTK + 3/PyGObject gibt.
Ihnen ein konkretes Beispiel zu geben, ist dies, wie Nautilus Image Manipulator;s UI aus seiner Glade Datei erstellt:
from gi.repository import Gtk
builder = Gtk.Builder()
builder.set_translation_domain('nautilus-image-manipulator')
builder.add_from_file(ui_filename)
return builder
Teile der Benutzeroberfläche, die von der Glade-Datei nicht erstellt werden (dh von Code festgelegt) angezeigt richtig übersetzt, aber die Strings aus der Glade-Datei erscheinen immer noch auf Englisch.
Es scheint mir, dass ich einen Anruf zu einer Art von builder.bind_text_domain('nautilus-image-manipulator', '/path/to/mo/folder')
vor dem Anruf zu builder.set_translation_domain
verpasst ... Irgendeine Idee, wie man das durchführt?
Haben Sie nur die übliche 'gettext.bindtextdomain()' ausprobiert? – ptomato