I18n на GTK4 и PythonPython

Программы на Python
Ответить
Anonymous
 I18n на GTK4 и Python

Сообщение Anonymous »

Я пишу приложение на Python с использованием GTK4 для Linux (Ubuntu 24) и Windows. Я еще новичок.
Это мое меню:

Код: Выделить всё





_File


app.new
_New
<Ctrl>n


_Quit
app.quit
<Primary>q





В Linux будут переведены пункты меню, но не метки клавиатуры:

Код: Выделить всё

os.environ["LANG"] = "de_DE.utf8"
os.environ["LANGUAGE"] = "de_DE.utf8"
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
locale.bindtextdomain("test-menu", "locale")
locale.textdomain("test-menu")
На английском языке я вижу «Новый Ctrl+N» и «Выйти Ctrl+Q». На немецком языке я вижу «Neu Ctrl+N» и «Beenden Ctrl+Q». Как я могу гарантировать, что при выборе немецкого языка будет сочетание клавиш Strg+N или Strg+Q и отсутствие Ctrl+N или Ctrl+Q? Я изменил язык пользователя в Ubuntu. Затем в пунктах меню других программ отображалось «Strg», но не в моей программе.
В Windows подход с использованием локали не работает. Простой gettext в Python не имеет связи с GTK. Я использовал последнюю версию текста.
Итак, я попробовал это, также с de и de_DE, и пункты меню «Файл», «Новый» и «Выход» не были переведены. Но я вижу Strg+N и Strg+Q:

Код: Выделить всё

os.environ["LANGUAGE"] = "de_DE.utf8"
os.environ["LANG"] = "de_DE.utf8"
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
libintl = ctypes.cdll.LoadLibrary(r"c:\gtk\bin\intl.dll")
libintl.bindtextdomain("test-menu", "locale")
libintl.textdomain("test-menu")
Как я могу локализовать эти пункты меню в Windows?
Для обычного текста я использую файлы po и mo. Если я хочу использовать разные горячие клавиши для разных языков пользователя, какой подход вы бы порекомендовали?
С уважением,
Андреас

Подробнее здесь: https://stackoverflow.com/questions/790 ... and-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»