0 / 0 / 0
Регистрация: 20.05.2015
Сообщений: 5

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

20.05.2015, 10:07. Показов 9650. Ответов 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru