Существует ли установленный подход для вставки gettext locale/xy/LC_MESSAGES/*
в пакет PYZ? В частности, для перевода Gotks-автоматического виджета из архива ZIP.
Для других встроенных ресурсов pkgutil.get_deta
или inspect
/get_source
работает достаточно хорошо. Но системные и Python API-интерфейсы gettext зависят от bindtextdomain
, поставляемого простой старой localedir
; нет ресурсов или строк и т.д.
Таким образом, я не мог придумать практичный или даже удаленный практический способ:
-
Виртуальные пути
gvfs
/gio
Теперь использованиеarchive://file%3A%2F%2Fmypkg.pyz%2Fmessages%2F
IRI будет альтернативой для чтения других файлов непосредственно из zip. Но glibs g_dgettext - это всего лишь тонкая оболочка вокруг системы lib. И поэтому любые такие URL-адреса не могут использоваться какlocaledir
. -
Частичное извлечение zip
Я думаю, что PyInstaller работает. Но это, конечно, несколько смешно, чтобы связать что-то как .pyz-приложение, только чтобы оно было перенаправлено на каждый вызов. -
Userland gettext
.mo
/.po
извлечение
Теперь чтение каталогов сообщений вручную или просто использование тривиальных dicts вместо этого будет вариантом. Но только для строк в приложении. Это опять же не означает, что Gtk/GtkBuilder забирает их неявно.
Таким образом, мне пришлось вручную перемещать все дерево виджетов, ярлыки, текст, внутренние виджеты, markup_text и т.д. Возможно, но meh. -
Установка FUSE
Это было бы неплохо. Но, конечно, можно было получить доступ к zip-содержимомуgvfs-mount
и т.д. Похоже, что это определенная память. И я сомневаюсь, что он остался бы надежным, например. два экземпляра приложения, или предыдущее, нечисто закончившееся. (Как и dunno, из-за системной библиотеки, такой как gettext, спотыкается о хрупкую точку плавкого перехода zip.) -
Сигнал/событие Gtk для перевода (?)
Я нашел squat об этом, поэтому я определенно не вижу альтернативного механизма для перевода виджета в Gtk/PyGtk/GI. Gtk/Builder ожидает и привязан к gettext.
Возможно ли более надежный подход?