Con gettext
è possibile utilizzare la directory locale predefinita dell'intero sistema oppure specificarne una utilizzando bindtextdomain
. Questo è utile quando si esegue un programma direttamente dal sorgente quando i file di traduzione .mo compilati non sono disponibili nella posizione predefinita del sistema.Come associare un dominio di testo a una cartella locale per gettext in GTK3
In Python si dovrebbe fare questo:
import gettext
from gettext import gettext as _
gettext.bindtextdomain('nautilus-image-manipulator', '/path/to/mo/folder')
gettext.textdomain('nautilus-image-manipulator')
dove /path/to/mo/folder
contiene il familiare fr/LC_MESSAGES/nautilus-image-manipulator.mo
struttura. Chiamate come questo:
print _("Delete this profile")
restituire la stringa correttamente tradotto dai file .mo locali, vi ringrazio molto.
In GTK + 2/pygtk, esisteva gtk.glade.bindtextdomain
, ma mi chiedo se non vi è alcun equivalente in GTK + 3/PyGObject.
Per darvi un esempio specifico, questo è il modo Nautilus Image Manipulator;s UI è stato creato dal suo file Glade:
from gi.repository import Gtk
builder = Gtk.Builder()
builder.set_translation_domain('nautilus-image-manipulator')
builder.add_from_file(ui_filename)
return builder
parti dell'interfaccia utente che non sono costruita dal file di Glade (cioè impostato dal codice) mostrare correttamente tradotto, ma le stringhe del file Glade vengono comunque visualizzate in inglese.
Mi sembra che mi manca una chiamata a qualche tipo di builder.bind_text_domain('nautilus-image-manipulator', '/path/to/mo/folder')
prima della chiamata a builder.set_translation_domain
... Qualche idea su come eseguire questo?
Hai provato solo il solito 'gettext.bindtextdomain()'? – ptomato