Как изменить язык в тексте кнопок MB_OKCANCEL (Windows API), используя MessageBoxExW с Python? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть приложение, которое показывает окно с двумя кнопками (Ok и Cancel), я использовал его на английском языке, но теперь я хочу показать текст кнопки Ok и Cancel на китайском.

Мой оригинальный кодбыло:

if win32con.IDOK == win32gui.MessageBox(self.hwnd,self.dic.voc["mainwin.quitConfirm"],
                                       self.dic.voc["mainwin.quitConfirmTitle"],
                                       win32con.MB_OKCANCEL):

И теперь я пытаюсь с функцией MessageBoxExW, потому что на странице API говорит, что вы можете использовать любой язык в последнем параметре (https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxexw).

Так что теперь мойкод выглядит следующим образом:

lang = win32api.MAKELANGID(4, 2)
if win32con.IDOK ==ctypes.windll.user32.MessageBoxExW(self.hwnd,self.dic.voc["mainwin.quitConfirm"], self.dic.voc["mainwin.quitConfirmTitle"], win32con.MB_YESNO, lang):

Но он продолжает отображать текстовые кнопки на английском, а не на китайском, я также установил на своем компьютере, в Регион и язык, китайский (упрощенный, КНР) в «Форматы»'и в' System Locale '. И мой сценарий закодирован как' UTF-8 '.

Когда я запускаю это,

locale.getdefaultlocale(["LANGUAGE"])

я получаю,

('zh_CN', 'cp936')

Буду очень признателен за любую помощь или подсказку. Большое спасибо.

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Если вы используете Windows 10, вам нужно установить языковой пакет в Windows для указанного языка.

Это не обязательно должен быть отображаемый язык по умолчанию, но он должен быть в установленных языковых пакетах.

enter image description here

0 голосов
/ 09 октября 2019

Большое спасибо за вашу помощь!

В конце концов, я смог установить нужный мне языковой пакет с помощью приложения Vistalizator, потому что у меня нет MUI, так как я использую Windows 7 Professional (иЯ не мог установить его через Microsoft Updates). Вам нужно только это приложение и языковой пакет для используемой версии Windows;Вы можете загрузить оба файла с одной и той же страницы (https://www.froggie.sk/es/details.html).

. В приложении вы выбираете загруженный exe-файл, содержащий языковой пакет, переходите в режим Express и выполняете шаги приложения.

Наконец-то я вижу текстовые кнопки на нужном мне языке и с помощью функции MessageBoxExW все работает! Я очень благодарен за вашу помощь.

...