【发布时间】:2021-02-07 22:40:54
【问题描述】:
我是使用 python 进行 GUI 编程的新手,我需要一个简单的示例来说明如何根据位于项目中的 .po 文件(我能够生成)更改 GUI 语言。我正在使用 GNOME Builder 来完成这项任务。
我想要的是从 xml 加载由 builder(或 Glade)生成的 gui 定义,并让程序根据我的计算机的区域设置/语言更改文本。
test
|
|- po
| |- it.po
| |- en.po
| |- ...
|
|- src
| |- test.in
| |- main.py
| |- window.py
| |- window.ui
| |- ...
这个包含主 UI 类的文件
#window.py
from gi.repository import Gtk
@Gtk.Template(resource_path='/path/to/ui/window.ui')
class TestWindow(Gtk.ApplicationWindow):
__gtype_name__ = 'TestWindow'
label = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
print(_("hello"))
我发现更改我放入代码中的字符串的语言就像编写一样简单
_("some string")
所以当加载 window.py 时,我会在终端中看到“ciao”(意大利语表示你好)。但我似乎无法更改 GUI 小部件的语言,例如我看到“随机文本”而不是“Testo a caso”(再次,意大利语翻译)。
是否有任何参数我可以传递给 Gtk.Template,或者我可以做一些 python 魔术来修改这种行为?
【问题讨论】:
-
您知道 XML 条目的
translatable=yes参数吗?例如,请参见此处的 UI 代码:python-gtk-3-tutorial.readthedocs.io/en/latest/builder.html -
是的,我为所有包含文本的小部件设置了它,但不幸的是它并没有解决问题
标签: python-3.x localization gtk3 pygobject gnome-builder