Рубрики
Без рубрики

Перевод приложения Python с лингвистом Qt

Перевод приложения обычно является привередливым и болезненным процессом. Надеюсь, Qt предоставляет отличную поддержку для перевода в локальные языковые приложения, разработанные в C ++ или Python. QT позволяет загружать файлы перевода языка в приложение во время выполнения. Это означает, что тексты приложений (I.E., меню, заголовки экранов, полевые этикетки, справочные файлы и т. Д.) Есть … Перевод на приложение Python с лингвистом Qt Подробнее »

Автор оригинала: Remy Mongin.

Перевод приложения обычно является привередливым и болезненным процессом.

Надеюсь, Qt предоставляет отличную поддержку для перевода в локальные языковые приложения, разработанные в C ++ или Python.

QT позволяет загружать файлы перевода языка в приложение во время выполнения. Это означает, что тексты приложений (I.E., меню, заголовки экранов, полевые этикетки, справочные файлы и т. Д.) Отображаются на локальном языке.

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

В этой статье я объясню процесс перевода пошаговой процесс. Тем не менее, я не буду проходить детали инструмента, потому что Qt предоставляет отличную документацию И многие учебники доступны в Интернете.

Требования к программному обеспечению

Помимо переводчика Python и ваш любимый Python IDE, вам придется установить Qt Package Отказ Qt включает в себя всеобъемлющий набор инструментов, таких как pylupdate5 , lrelease и Pyrcc5 для перевода приложений на местные языки. Я вернусь к этим инструментам ниже.

Замечание : Хотя это не предмет этой статьи, я настоятельно рекомендую вам использовать Виртуальные среды (Virtualenv или Anaconda) для разработки проекта. Это один из важных инструментов, которые большинство из Разработчики Python использовать.

Процесс перевода

Вы найдете позже схему, показывающую процесс перевода:

В зависимости от типа и размера проекта, разработчик и переводчик могут быть одним уникальным человеком.

Для создания партии GUI приложения есть два варианта разработчика:

  1. Использовать Qt Designer , инструмент для проектирования и строительства графических пользовательских интерфейсов с QT виджеты Отказ Виджеты и формы, созданные с помощью QT Designer, могут быть легко интегрированы с запрограммированным кодом. Кроме того, все свойства, установленные в конструкторе QT, могут быть изменены динамически в пределах приложенного кода.
  1. Используйте модули Python, предоставляемые QT для реализации и настраивания виджетов в код приложения вручную.

Вы найдете позже краткий обзор процессов:

  • Шаг 1 (Необязательно): Проектирование и создайте расстройку GUI с помощью QT Designer.
  • Шаг 2 (необязательно): преобразовать файлы qt designer в файлы python.
  • Шаг 3: Реализуйте код, необходимый для процесса перевода.
  • Шаг 4: Создание или обновление файлов перевода.
  • Шаг 5: Перевод текстов.
  • Шаг 6: Преобразовать файлы перевода в двоичные файлы.
  • Шаг 7 (необязательно): преобразовать перевод двоичных файлов в модуль ресурсов Python.

Подготовка приложений Python

Код GUI, генерируемый QT Designer

Если разработчик использует инструмент Designer QT для создания GUI, он должен сначала преобразовать исходный файл Qt (.ui) в исходный файл Python (.py). Это преобразование выполняется путем выполнения pyuic5 Инструмент (шаг 2). Я рекомендую использовать пакетный файл для этого. Вот пример:

Pyuic5 Инструмент автоматически добавляет в конце файла Python функция, предназначенная для перевода. Это Функция Переводит все строки, найденные в исходный файл Qt с помощью Qt Перевести функция. Таким образом, разработчик не должен выполнять дополнительные действия относительно текстов:

Код GUI сгенерирован вручную

  • Если разработчик строит GUI вручную, он должен подготовить код, позвонив QT Перевести Функция для каждой строки, которая требует перевода (шаг 3). Чтобы сделать код более читабельным, я рекомендую вам реализовать следующие tr () Функция:

Затем разработчик просто должен позвонить в tr () Функция для каждого текста будет переведена:

Файлы перевода (.ts)

Файлы перевода (.ts) должны быть созданы, если не существуют или обновлены, если текст был добавлен, изменен или удален. Разработчик должен использовать определенный файл (.pro), чтобы настроить, как будут сгенерированы файлы перевода:

  • Источники: исходные файлы Python, содержащие тексты для перевода
  • Переводы: языковые файлы. Имя файла состоит из имени приложения, за которым следует язык и, наконец, расширение .ts. Смотрите следующую главу для получения дополнительной информации относительно языка.

Разработчик должен использовать pylupdate5 Qt Tool для генерации файлов перевода:

Выполнение этого файла пакетного файла автоматически генерирует два файла перевода, указанные в файле конфигурации .pro, а именно pptslidegenerator.fr.ts и pptslidegenerator.en.ts Отказ

Местный языковой код

Язык, используемый в имени файла перевода, должен следовать строгим правилам. Он состоит из первых букв группы языковых строк, совместимых с RFC 1766. В следующей таблице вы найдете экстракт общим поддерживаемым языковым строкам, предоставляемым Microsoft ( Microsoft Language Strings ):

Языковые струны Описание
en-us Английский (Великобритания)
en-gb. Английский Соединенные Штаты)
департамент Немецкий (Германия)
эс испанский язык
Это Итальянский (Италия)
ой Французский (Франция)

Благодаря Python локаль модуль и его GetDefaultLocale Функция, можно получить локальный язык компьютерной системы. Это позволяет нам загружать файл правильного языка при запуске приложения автоматически. GetDefaultLocale Функция пытается определить настройки локали по умолчанию. Если вызов успешен, он возвращает их в виде кортежа формы ( Код языка , кодирование). Код языка состоит из двух частей, языка и страны:

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

Перевод с qt lingive

Qt Lingust – это удобный инструмент, используемый для изготовления текстового перевода очень прост.

Переводчик сначала открыть файл перевода .ts (Шаг 5). Также возможно открыть все файлы перевода одновременно, чтобы перевести тексты на разных языках параллельно. Переводчик теперь может перейти к переводу различных текстов:

Давайте посмотрим на разные разделы этого окна:

  • Контекст : Представление контекста перечисляет контексты, в которых появляются строки. В этом примере @default соответствует pptslidegenerator.py Файл проекта как MainWindow соответствует mainwin.py Файл (MainWindow – это имя объекта, установленное в Qt Designer для главного окна). Количество переведенных строк упоминается на правой стороне.
  • Строки : Просмотр строк списков строк, найденных в контексте. Эти строки были извлечены благодаря наличию функции Tr () или Translate () в исходный код. В следующей таблице указано текущее состояние перевода для каждой строки:
государство Икона Описание
Принято / правильно Переводчик принял перевод, и перевод прошел все тесты проверки. Если поле перевода пустое, переводчик решил оставить его пустым.
Принятые / предупреждения Переводчик принял перевод, но перевод не прошел все тесты проверки. Неисправности проверки проверки отображаются в представлении предупреждений.
Не принимаются Строка имеет перевод, который передал все тесты проверки, но переводчик еще не принимал перевод.
Нет перевода Там нет перевода для строки.
Неудачные сбои Строка имеет перевод, но перевод не прошел все тесты проверки. Тестовые сбои проверки отображаются в представлении предупреждений.
Устаревший Строка устарела, потому что она больше не используется в контексте.
  • Область перевода (Среднее справа): область, предназначенная для перевода текущей строки в Перевод поле. На основании имени файла перевода Qt Lingist автоматически определяет язык, используемый для перевода. Если строка может быть переведена во множественном числе, Qt Lingist будет задать два перевода: один в единственном числе (” есть% n файл “) и один в множественном числе (” есть% n файлов »).
  • Предупреждения : Представление предупреждений перечисляет все тексты, которые не проходят проверки проверки.

Как только переводчик завершил перевод и проверку всех текстов, он должен сохранить файл перевода.

Компиляция файлов перевода

Переводчик должен скомпилировать файл перевода в .QM Двоичный формат (шаг 6). Самый простой способ для переводчика состоит из использования функции qt лингвистской встроенной функции выпуска (” Выпуск ” Если только один файл открыт или ” выпустить все ” для нескольких файлов):

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

Ресурс папка:

Загрузка файла перевода в приложение Python

Последний шаг процесса состоит из загрузки файлов перевода в приложение. Когда разработчик решит распространить приложение, доступны два варианта для файлов ресурсов:

  1. Распределите приложение с папкой файлов ресурсов, которая будет отделена от исполняемого приложения.
  1. Составьте файлы ресурсов в Python File , который будет частью исполняемого приложения (этап 7, рекомендуемое решение).

Для варианта B Разработчик должен сначала обновить файл ресурсов Resources.qrc Сгенерируется QT Designer, добавив бинарный файлы перевода:

Раздел, связанный с языком, определяется внутри QResource ярлык.

Затем разработчик должен использовать Pyrcc5 Qt Tool для генерации файла ресурсов Python, который будет содержать все скомпилированные ресурсы (логотип и файлы перевода в нашем примере):

Вы найдете позже код для реализации со спецификами, связанными с каждым вариантом ( A или B ):

  • Модули импортируют

А :

B :

  • Инициализация класса переводчика

А / B :

А :

Мы узнаем в этом коде, язык определяется с GetDefaultLocale функция. Кроме того, мы должны добавить конкретный Resource_Path Функция, чтобы получить путь к папке ресурсов. Это особенно важно, когда разработчик решает подключить приложение и все его зависимости в один исполняемый файл. Это действительно связано с тем, что при запуске исполняемый файл создает временную папку с именем _meixxxxxx (xxxxxx – это случайное число) в соответствующем месте временной папки для этой операционной системы.

B :

  • Изменение языка

Благодаря следующему коду можно изменить язык во время выполнения:

А :

B :

Вывод

Как вы, возможно, заметили, переводцы QT-приложений является очень хорошо продуманным процессом, и все планируется.

Теперь у вас есть все инструменты в руках, чтобы транслировать вашу программу в любом месте в мире, вам просто нужно найти хороший переводчик!