Путевые заметки в процессе познания Python и PyQt/PySide.
Помни - только тег CODE не портит код добавлением пробела в начало пустой строки.
Помни - только тег CODE не портит код добавлением пробела в начало пустой строки.
К вопросу о локализации приложений PyQt.
Запись от iamvic размещена 12.06.2022 в 19:54
Показов 2431
Комментарии 4
|
Так получилось, что тема Переименовать кнопку "setDetailedText", которую недавно поднял telnofff, как-то незаметно превратилась в Памятку. Насколько я понял, настоящей-то причиной появления этой темы было не желание заменить стандартный текст на этой злосчастной кнопке на какой свой, а то, что этот текст выдавался на английском вместо используемого в системе русского. Помогает решить эту проблему только явное указание транслятору использовать соответствущий файл перевода, уже установленный в системе при инсталляции PyQt. Ситуация получается достаточно странная - сам PyQt прекрасно знает, где расположены файлы переводов, но воспользоваться ими без прямого и явного указания не может. Чтобы проверить всегда ли это так, может быть надо что-то подкрутить в системе, чтоб не маяться с этой обязаловкой, и был написан такой пробничек: locale_probe1.py
- запустили без параметра, значит действует по умолчанию в соответствии с настройками инсталлятора; - запустили с параметром, значит файл переводов указывается явно, исходя из языка, используемого системой. Результаты тестов в ближайшем окружении не обрадовали: - в Windows всегда требуется явное указание файлов переводов, - в Linux по разному - Lubuntu, Xubuntu и прочие ведут себя аналогично Windows, а вот для OpenSUSE явного указания не требуется. Значит можно что-то подкрутить в самой операционной системе - знать бы ещё что?.. убрано под спойлер для истории 19.06.2022 22:00:00 Кликните здесь для просмотра всего текста
Картинки: Windows без параметра Windows c параметром Linux OpenSUSE без параметра добавлено 14.06.2022 22:20 Добавлю пример, родившийся по ходу обсуждения (картинки уж больно выразительны)
Windows c параметром Очередной примерчик даёт всё-таки более наглядное представление о происходящем:
OpenSUSE По цифиркам в заголовке окон хорошо видно, что создаваемый в секции __main__ экземпляр QApplication под Windows не содержит ни одного предварительно загруженного транслятора, в отличие от создаваемого под OpenSUSE. А вот выяснить какие файлы подгружают эти трансляторы, похоже, не удастся - "нету у нас методов против QTranslator-а"
| |||||||||||||||
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
-
Запись от kapbepucm размещена 14.06.2022 в 14:42
-
Честно говоря, что там сделали в OpenSUSE мне представляется уже не особо важным
Мне тут коллеги накидали своих результатов - там и PySide2 есть, и PySide6, Linux-ов разных - пучок. Практически везде ситуация одинаковая, если прямого и явного указания нет, то и перевода нет. "PyQt - птица гордая, пока не пнёшь - будет каркать на тарабарском"
Некоторое количество затесавшихся OpenSUSE - это экзотика на фоне всего остального...
И как-то не просматривается пока другого общего решения, кроме "обязательных ужимок и прыжков" с явным указанием транслятору файла переводов
. А под раздачу-то попадают как раз самые навороченные и ходовые из стандартных диалогов (QColorDialog, QFileDialog, QFontDialog, QMessageBox) и QDialogButtonBox.Запись от iamvic размещена 14.06.2022 в 17:40
-
Решение-то весьма неочевидное. Самостоятельно прийти к пониманию происходящего можно, только имея неслабую подготовку и опыт. Чтобы осознать, что стандартные диалоги - это продукт, созданный с применением инструментов системы разделения труда (один кодит, другой рисует, третий переводит и т.д.), требуется перепробовать все эти инструменты (QtDesiner, QtLinguist и прочее), посоздавать свои файлы переводов, научиться их подключать и т.д. И только потом в голове щёлкнет и появится понимание чего не хватает этим стандартным диалогам для работы.
Наверное, было бы совсем неплохо, если бы в разделе Python: GUI, графика была тема, например, "Важно: PyQt: неочевидные решения" куда можно было бы сваливать информашки такого рода. Это ж, наверное, не единственный и неповторимый в своём роде случай?Запись от iamvic размещена 16.06.2022 в 15:50
-
Зафиксирую ссылочку О локализации стандартных диалогов PyQt(PyQt5/PyQt6/PySide2/PySide6 и т.д.)Запись от iamvic размещена 21.06.2022 в 11:00

Мне тут коллеги накидали своих результатов - там и PySide2 есть, и PySide6, Linux-ов разных - пучок. Практически везде ситуация одинаковая, если прямого и явного указания нет, то и перевода нет. "PyQt - птица гордая, пока не пнёшь - будет каркать на тарабарском" 
