Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/48: Рейтинг темы: голосов - 48, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 5

Python + PyQt Многоязычный интерфейс программы

20.05.2015, 10:07. Показов 9696. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет Уважаемые форумчане !

Назрела необходимость добавить в программу возможность переключения языка интерфейса. Прошу Вашей помощи в виде подсказки подойдут любые сведения в виде ссылок , статей , книг, примеров и чего только можно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2015, 10:07
Ответы с готовыми решениями:

Внедрение сторонних окон в интерфейс приложения на PyQt
Доброго времени суток. У меня есть задача разработать интерфейс, я решил выбрать PyQt в качестве инструмента для этой цели. Это что-то...

Разархивирование при установке собранной программы на Python и PyQt
Доброго времени суток! Скажите пожалуйста, есть ли какие-нибудь методы сборки py -> exe помимо pyinstall? Проблема заключается в том,...

Многоязычный интерфейс
Доброго времени суток. Подскажите пожалуйста каким образом делается многоязычный интерфейс, на каком принципе?

6
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
20.05.2015, 10:41
Для этого используется QApplication.Translate.
В свою очередь, используется объект QTranslator. Для него нужны специальные словари, подготовленные (скомпилированные) программой Qt Linqust, а они компилируются из xml-файлов с раcширением ts.

Я сам внутрь этой кухни не влезал, так что даю просто направление, без подробностей.
1
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 5
20.05.2015, 10:55  [ТС]
Спасибо, сейчас начну ковырять в этом направлении
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.05.2015, 13:54
Могу по С++Qt кинуть инфу Локализация / интернационализация / перевод приложения на другой язык
в Python/PyQt должно по идее работать аналогичным образом.
Там же ссылка на http://habrahabr.ru/post/51319/
Но тут возникают много вопросов про макрос tr() и сможет ли утилита lupdate сгенерировать к *.ts- файл на основе кода на python, как она это делает с кодом на с++

Добавлено через 5 минут
А это уже по PyQt:
http://pyqt.sourceforge.net/Docs/PyQt4/i18n.html
http://habrahabr.ru/post/75226/
0
0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 5
20.05.2015, 13:55  [ТС]
Пока копаю. Мануалы по QT не совсем подходят ибо в проекте Python + PyQt нет файла *.pro
А так же не могу пока разобраться как создать словарь из проекта на Python. В QtCreator это сделать проще.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.05.2015, 14:03
А он и не нужен. А утилиты те же.

А вот кстати для PyQt5 http://pyqt.sourceforge.net/Docs/PyQt5/i18n.html

The process of internationalising an application comprises the following steps.
  • The programmer uses pylupdate5 to create or update a .ts translation file for each language that the application is to be translated into. A .ts file is an XML file that contains the strings to be translated and the corresponding translations that have already been made. pylupdate5 can be run any number of times during development to update the .ts files with the latest strings for translation.
  • The translator uses Qt Linguist to update the .ts files with translations of the strings.
  • The release manager then uses Qt’s lrelease utility to convert the .ts files to .qm files which are compact binary equivalents used by the application. If an application cannot find an appropriate .qm file, or a particular string hasn’t been translated, then the strings used in the original source code are used instead.
  • The release manage may optionally use pyrcc5 to embed the .qm files, along with other application resources such as icons, in a Python module. This may make packaging and distribution of the application easier.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
23.04.2016, 17:23
Цитата Сообщение от MihailVlaskin Посмотреть сообщение
Мануалы по QT не совсем подходят ибо в проекте Python + PyQt нет файла *.pro
1. Проектного файла нет поэтому нужно указывать все файлы проекта(*.py и *.ui) в pylupdate5
Bash
1
C:\Python34\Lib\site-packages\PyQt5\pylupdate5 main.py MainWindow.py MainWindow.ui -ts Watcher_ru.ts
main.py,MainWindow.py,MainWindow.ui - файлы проекта.
Watcher_ru.ts- выходной файл (имя проекта)

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

2. Затем редактируем полученный файл *.ts можно в редакторе Linguist.exe, а можно руками в блокноте.

3. Сохраняем и преобразовываем ts в qm с помощью lrelease
Bash
1
C:\Python34\Lib\site-packages\PyQt5\lrelease Watcher_ru.ts
4. И грузим его в основном коде
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!-*-coding:utf-8-*-
import sys
 
from PyQt5.QtCore import QTranslator
from PyQt5.QtWidgets import QApplication
from MainWindow import MainWindow
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
 
    translator = QTranslator()
    translator.load("Watcher_ru")  # Watcher_ru.qm
    if not app.installTranslator(translator):
        print("Can not install translation!")
 
    w = MainWindow()
    w.ui.retranslateUi(w)
 
    app.exec()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2016, 17:23
Помогаю со студенческими работами здесь

Многоязычный интерфейс
Всем привет! Подскажите пожалуйста по сабжу. 1. Какие способы реализации бывают? 2. Какие достоинства, недостатки, подводные камни у...

Многоязычный интерфейс
Добрый день! Помогите реализовать многоязычность в программе.

Многоязычный интерфейс
У меня такой вопрос:-Можно ли в программе написанной на С++ в меню добавить строку Language и несколько вариантов языков указав к каждому...

Многоязычный интерфейс в C++ Builder
Здравствуйте... Хочу написать программу, которая поддерживает выбор языков... Сделал кое что... с помощью форм... То есть когда выбираю...

Многоязычный интерфейс для MS ACCESS
Есть ли идеи или где почитать как лучше сделать формы поддреживающие 2 или 3 языка на MS Access Заранее благодарен


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru