1
Gladeが/ optから翻訳をロードする方法
Ubuntuアプリデベロッパープロセスを通じて提出したいアプリケーションを作成しました。プロセスの要件の1つは、インストール時にすべてのファイルが/opt/extras.ubuntu.com/<appname>ディレクトリに移動することです。 パッケージの変更と他の人の助けを借りてそれを達成しましたが、今、私は新しい問題に直面しています:/optアプリからの翻訳から実行すると、ロードされません。 何が起こるかは次のとおりです。特に指定がない限り、アプリケーションの翻訳を含むバイナリファイル(MOファイル)は/usr/share/locale(Ubuntuの場合は/usr/share/locale-langpack)から読み込まれますが、私のアプリでは/opt要件により、/opt/extras.ubuntu.com/qreator/locale。 gettextでは翻訳をロードするための別の場所を指定できるため、理論的には問題ありません。そのため、bindtextdomain呼び出しを追加してそれを実現します。 import gettext from gettext import gettext as _ gettext.bindtextdomain('qreator', '/opt/extras.ubuntu.com/qreator/share/locale/') gettext.textdomain('qreator') コマンドラインで出力されるすべてのメッセージは、期待どおりに翻訳されたように見えます。しかし、それは主な問題を解決しません:UI Gladeから翻訳をロードするには、もう一度翻訳ドメインを指定する必要があります(gettext.textdomain('qreator')上記の呼び出しと同等)が、そこから翻訳をロードする場所を指定することはできません(つまり、Gladeと同等です)bindtextdomain残念ながら存在しません)。これが私が使用しているコードの抜粋です: builder = Gtk.Builder() builder.set_translation_domain('qreator') # There isn't a way to tell glade to load translations from # somewhere else than /usr/share/locale here builder.add_from_file(ui_filename) つまり、アプリがにインストールされている場合、UIからの翻訳を読み込むことができません/opt。 この時点ではかなり行き詰まっています。の/opt/extras.ubuntu.com/qreator/share/locale/代わりにGladeが翻訳をロードする方法に関するアイデアはあり/usr/share/localeますか?