Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.08.2022
Сообщений: 15

PySide2: теряется локализация при преобразовании в exe

11.10.2023, 11:32. Показов 419. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Пользуюсь таким кодом для перевода диалоговых окон qt
Python
1
2
3
4
5
6
7
8
9
10
11
I18N_QT_PATH = r'i18n\i18n'
...
(Часть кода)
locale = 'ru_RU'
 
qt_translator = QTranslator(app)
qt_translator.load('{}/qtbase_{}.qm'.format(I18N_QT_PATH, locale))
app_translator = QTranslator(app)
app_translator.load('{}/{}.qm'.format(I18N_QT_PATH, locale))
app.installTranslator(qt_translator)
app.installTranslator(app_translator)
При преобразовании в exe с помощью auoto-py-to-exe диалоговые окна на английском. Подозреваю, что надо указать какие-то дополнительные параметры, но не соображу что именно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.10.2023, 11:32
Ответы с готовыми решениями:

При преобразовании кодировки теряется заглавная И
String res = "Ирка"; String utf8String= new String(res.getBytes("UTF-8"), "windows-1251"); utf8String= new...

При преобразовании из строкового литерала теряется квалификатор
Помогите пожалуйста, в файле Source1.cpp в 8 строке выдает ошибку "Libray::Libray(const Libray &)": невозможно преобразовать аргумент...

Ошибка при работе с цифрами в pyside2
Как обычно ввожу a = ui.lineEdit_3.text() , потом мне надо с этим a выполнить операцию, например b = a // 1000, но в консоле выводится...

3
Нарушитель
110 / 86 / 32
Регистрация: 10.05.2023
Сообщений: 323
17.10.2023, 01:58
Один из возможных подходов - добавить параметр --locale ru_RU при запуске auto-py-to-exe. Это позволит указать желаемую язык для вашего приложения. Также, убедитесь, что файлы перевода .qm для русского языка находятся в правильной директории i18n\i18n.
0
9 / 7 / 2
Регистрация: 16.10.2023
Сообщений: 25
17.10.2023, 13:49
Если ваши диалоговые окна в приложении на PyQt отображаются на английском языке после преобразования в исполняемый файл (exe) с помощью auto-py-to-exe, это может быть связано с тем, что библиотеки PyQt и Qt используют стандартные локали для языка по умолчанию. Для того чтобы указать язык, на котором должны отображаться диалоговые окна, вы можете воспользоваться следующими рекомендациями:

Проверьте, что вы правильно установили нужные файлы перевода (.qm файлы) для вашего приложения. Убедитесь, что .qm файлы для русского языка находятся в указанной вами директории I18N_QT_PATH.

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

Вам необходимо установить правильную локаль (русскую) для вашего приложения перед установкой переводов. Это можно сделать следующим образом:

Python
1
2
3
4
5
6
python
Copy code
from PyQt5.QtCore import QLocale
 
locale = QLocale('ru_RU')
QLocale.setDefault(locale)
Удостоверьтесь, что ваше приложение использует правильную локаль, как указано выше, и только затем устанавливайте переводы.

Проверьте, что .qm файлы для русского языка были правильно сгенерированы при помощи lupdate и lrelease. Если вы используете Qt Linguist для создания переводов, убедитесь, что вы выполнили все этапы создания и сборки переводов.

После того как вы удостоверитесь, что все настройки верны, пересоберите ваше приложение с помощью auto-py-to-exe, и оно должно отображать диалоговые окна на русском языке.

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

Добавлено через 1 минуту
Проблема, которую вы описали, может возникнуть, если библиотеки Qt не находят переводов для русского языка. Чтобы исправить эту проблему, вам нужно убедиться, что переводы для Qt и вашего приложения доступны и правильно настроены. Вот несколько шагов, которые вы можете предпринять:

Убедитесь, что у вас есть файлы перевода (файлы .qm) для Qt и вашего приложения на русском языке.

Убедитесь, что файлы перевода Qt (например, qtbase_ru_RU.qm) находятся в папке i18n\i18n.
Убедитесь, что файлы перевода вашего приложения (например, ru_RU.qm) также находятся в той же папке.
Убедитесь, что вы используете правильные идентификаторы локали. В вашем коде вы устанавливаете locale в 'ru_RU', так что это должно быть в порядке.

Убедитесь, что файлы перевода загружаются правильно. В вашем коде вы используете QTranslator.load(), чтобы загрузить файлы перевода. Убедитесь, что пути к файлам .qm указаны правильно. Если файлы перевода находятся в папке приложения, используйте абсолютные пути, чтобы избежать проблем с относительными путями.

После загрузки переводов убедитесь, что они устанавливаются в приложении. В вашем коде это делается с помощью app.installTranslator(qt_translator) и app.installTranslator(app_translator). Убедитесь, что эти строки выполняются и что нет ошибок при установке переводов.

Убедитесь, что ваше приложение использует правильную локаль. Возможно, приложение устанавливает локаль автоматически на основе системных настроек. Проверьте, какая локаль устанавливается, и убедитесь, что это ru_RU или другая русская локаль.

Если после выполнения этих шагов проблема не решена, вам, возможно, потребуется проверить настройки сборки с помощью auto-py-to-exe. Убедитесь, что файлы перевода включены в сборку и правильно расположены внутри исполняемого файла.

Если проблема сохраняется, уточните, какие версии Qt и PyQt вы используете, а также какие версии инструментов для сборки (например, auto-py-to-exe). Это может помочь в дальнейшем анализе проблемы.
0
0 / 0 / 0
Регистрация: 27.08.2022
Сообщений: 15
17.10.2023, 18:54  [ТС]
Может кому пригодится, сработал такой код
Python
1
2
3
4
5
6
if (len(app.findChildren(QTranslator)) == 0 and QLocale().name()[0:2] != 'en'):
    qtrn = QTranslator(app)
 
    if qtrn.load(
'qtbase_' + QLocale().name()[0:2], QLibraryInfo.location(QLibraryInfo.TranslationsPath)):
        app.installTranslator(qtrn)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.10.2023, 18:54
Помогаю со студенческими работами здесь

Локализация формы без создания dll для каждой культуры, а все в одном exe файле
Собственно все сказано в заголовке темы.. Такое возможно?:)

Ошибка при построении: сбой при преобразовании в COFF: файл недопустим или поврежден
Немогу ничего запустить (даже самый маленький проект). LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или...

Ошибка при компиляции: сбой при преобразовании в COFF: файл недопустим или поврежден
Подскажите что за ошибка при компиляции LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден,...

При запуске программы возникает ошибка: сбой при преобразовании в COFF: файл недопустим или поврежден
error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден причём, в режиме Release работает нормально, а в Debug...

Ошибка при компиляции в Visual C++ 2010: Сбой при преобразовании в COFF: файл недопустим или поврежден
Здравствуйте. Это моё первое сообщение на этом форуме. Я бы хотел вас спросить, при компилирования какого нибудь проекта в Visual Studio...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru