Как связать текстовый домен с локальной папкой для gettext в GTK3

С помощью gettextвы можете либо использовать системный -каталог локали по умолчанию, либо указать его самостоятельно, используя bindtextdomain. Это полезно при запуске программы непосредственно из исходного кода, когда скомпилированные файлы перевода.mo недоступны в расположении системы по умолчанию.

В Python вы бы сделали это :

import gettext
from gettext import gettext as _
gettext.bindtextdomain('nautilus-image-manipulator', '/path/to/mo/folder')
gettext.textdomain('nautilus-image-manipulator')

, где /path/to/mo/folderсодержит знакомую структуру fr/LC_MESSAGES/nautilus-image-manipulator.mo. Подобные вызовы:

print _("Delete this profile")

возвращают правильно переведенную строку из локальных файлов.mo , большое спасибо.

В GTK+2/pygtk существовалgtk.glade.bindtextdomain, но мне интересно, есть ли эквивалент в GTK+3/PyGObject.

Чтобы дать вам конкретный пример, вот как Пользовательский интерфейс Nautilus Image Manipulator создается из его файла Glade:

from gi.repository import Gtk
builder = Gtk.Builder()
builder.set_translation_domain('nautilus-image-manipulator')
builder.add_from_file(ui_filename)
return builder

Части пользовательского интерфейса, которые не созданы из файла Glade (, т.е. набор из кода )отображается правильно переведенным, но строки из файла Glade по-прежнему отображаются на английском языке.

Мне кажется, что я пропускаю вызов какого-то builder.bind_text_domain('nautilus-image-manipulator', '/path/to/mo/folder')перед вызовом builder.set_translation_domain... Есть идеи, как это сделать?

20
задан Emilien 10 April 2012 в 18:27
поделиться