Я новичок в программировании графического интерфейса с помощью python, и мне нужен простой пример того, как изменить язык графического интерфейса на основе файлов .po (которые я могу генерировать), расположенных внутри проекта. Я использую GNOME Builder для этой задачи.
Я бы хотел загрузить определение графического интерфейса из xml, созданного разработчиком (или Glade), и позволить программе изменять тексты в зависимости от языка/языка моего компьютера.
test
|
|- po
| |- it.po
| |- en.po
| |- ...
|
|- src
| |- test.in
| |- main.py
| |- window.py
| |- window.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 в терминале (привет по-итальянски). Но я не могу изменить язык виджетов графического интерфейса, например, я вижу случайный текст, а не Testo a caso (опять же, итальянский перевод).
Есть ли какой-либо параметр, который я могу передать в Gtk.Template, или какую-то магию Python, которую я могу сделать, чтобы изменить это поведение?
translatable=yes
для записей XML? См., например, код пользовательского интерфейса здесь: python-gtk-3 -tutorial.readthedocs.io/en/latest/builder.html - person nielsdg   schedule 25.10.2020