Глобализация приложения

Qt содержит инструменты и методы для интернационализации приложения. Для подробной информации см.Интернационализация и локализация в Qt Quick.

Основные шаги выглядят так:

  1. Убедитесь, что в файлах QML учитывается возможность интернационализации, в т.ч.: используются текстовые строки, не допускающие различного толкования идентичного текста, используются параметры и локали.
  2. Используйте инструмент командной строки lupdate.exe для генерации базового файла перевода, затем скопируйте базовый файл перевода и присвойте ему имя в соответствии с каждым требующимся языком.
  3. Qt Linguist для открытия этих файлов и перевода.
  4. В Qt Linguist выберите Файл > Версия или используйте инструмент командной строки lrelease.exe для генерации файлов перевода.
  5. Включите эти файлы перевода в проект, из которого будет создаваться отдельное приложение.

Интернационализация QML

The Qt Company рекомендует выполнить следующие шаги для интернационализации QML:

  1. Используйте qsTr() для всех буквенных строк интерфейса.
  2. Добавьте контекстное описание. Используйте комментирование с применением специального синтаксиса для описания того, где используется строка. //: является комментарием для переводчика, а //~ - дополнительной информацией.
  3. Текст, не допускающий различного толкования. Если у термина есть несколько значений, добавьте второй параметр, чтобы их различать, например, text: qsTr("back", "not front"); text: qsTr("back", "go backward").
  4. Используйте %x для вставки параметров в строку, например, text: qsTr("File %1 of %2").arg(counter).arg(total).
  5. Используйте %Lx, чтобы числа были локализованы, например, text: qsTr("%L1").arg(total).
  6. Интернационализируйте даты, время и валюты, например, text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale())).
  7. Используйте QT_TR_NOOP() для переводимых текстовых строк данных.
  8. Используйте языковую установку для того, чтобы локализованные объекты везде, где это возможно.

Для подробной информации о каждом шаге см.Интернационализация и локализация в Qt Quick.

Следует также учитывать возможность интернационализации при добавлении в приложение изображений. Отображаемое изображение может отличаться в зависимости от выбранного языка. В следующем примере показывается, как определить, что используется язык RTL "справа-налево", и как задать пользовательский параметр mirror. Этот параметр в дальнейшем будет использоваться для определения показываемого изображения.

    property var localeForRTL:["ar", "he", "he-IL"]
    property bool mirror: localeForRTL.indexOf(Qt.locale().uiLanguages[0]) > -1 

    Image{
        source: mirror ? "./RTLimage.png" : "./Image.png"
    }

lupdate

lupdate – это инструмент командной строки Qt, расположенный в папке установки AppStudio.

Для запуска откройте окно командной строки в папке проекта и выполните следующую. Следует иметь в виду, что точка, используемая в каждом из следующих примеров, представляет текущий каталог, который является папкой приложения, содержащей файлы .qml.

На Windows:

C:\Users\UserName\ArcGIS\AppStudio\Apps\MyApp>"C:\Users\Username\Applications\ArcGIS\AppStudio\bin\lupdate.exe" . -extensions qml -ts languages/MyApp_en.ts

На macOS:

/Users/UserName/applications/ArcGIS/AppStudio/tools/lupdate . -extensions qml -ts languages/MyApp_en.ts

На Ubuntu:

~/Applications/ArcGIS/AppStudio/bin/lupdate . -extensions qml -ts languages/MyApp_en.ts

Будет создан новый файл MyApp_en.ts.

Переводы для новых языков создаются посредством копирования и переименования файла MyApp_en.ts единожды для каждого требуемого языка и замены кода en на код соответствующего языка. После этого файлы .ts можно редактировать с помощью Qt Linguist.

Дополнительные сведения см. в разделе Использование lupdate.

Qt Linguist

Linguist – это инструмент GUI, расположенный в папке установки AppStudio. Вы открываете файлы .ts, созданные в Linguist с помощью lupdate, и добавляете перевод для каждой указанной строки. Инструмент lrelease будет обрабатывать только те строки, которые отмечены как готовые.

Более подробно см. раздел Руководство к Qt Linguist.

lrelease

Существует два способа формирования файлов выпуска:

  • Откройте готовый файл .ts в Linguist и в меню Файл выберите Выпуск. Будет создан файл .qm, соответствующий файлу .ts.
  • Используйте инструмент командной строки. lrelease – это инструмент командной строки Qt, расположенный в папке установки AppStudio. Файлы перевода runtime могут быть сгенерированы следующей командой, где должен быть перечислен каждый языковой файл, который нужно создать:

    lrelease.exe languages\MyApp_ar.ts languages\MyApp_fr.ts

  • Перенесите опцию -help в lrelease для просмотра поддерживаемых опций.

Более подробно см. Использование lrelease.

Использование в приложении файлов локализации

Перед тем, как использовать инструмент Создать для создания установочных файлов, убедитесь в том, что в проект включаются файлы .qm. Рекомендуются следующие правила именования папок:

MyApp > languages > qml_localecode.qm

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

  • MyApp > languages > qml_de.qm
  • MyApp > languages > qml_fr.qm
  • MyApp > languages > qml_zh.qm

Вы также должны сказать приложению, где искать эти файлы. Эта информация задана в файле appinfo.json. Откройте файл appinfo.json в текстовом редакторе и добавьте в него следующее свойство:

    "translations": {
        "fileName": "qml",
        "path": "languages"
    },

В приведенном выше примере именем файла является qml. Вам не нужно включать подчеркивания и код языка. Именем папки в примере кода является languages, что также соответствует приведенному выше примеру. Вы можете сами выбрать имя папки и файла; их только нужно прописать в файле appinfo.json.

Когда вы запустите приложение на устройстве с системными региональными настройками, которые соответствуют языку, для которого задан файл перевода, приложение автоматически выведет строки из соответствующего файла. В целях проверки можно использовать другой параметр командной строки --locale, который заменит язык системы на любой другой язык, который вы добавите для данного параметра. Например, если в командной строке добавить --locale fr, то приложение запустится с франзузскими файлами локализации. Эти параметры командной строки также могут использоваться при запуске приложения в AppStudio, если указать этот параметр в поле Аргументы командной строки: на вкладке Qt Creator Проекты.

При использовании приложения с предоставленными и настроенными файлами перевода различные файлы перевода могут быть загружены в приложении с помощью метода loadTranslator в компоненте AppFramework.

Локализация приложения

Если вы решите распространить свое приложение через магазин, и если вы уже предприняли меры по его глобализации, то наряду с этим следует выполнить комплекс мер по локализации своего приложения. Возможность локализации листинга хранилища обеспечивается как в App Store, так и в Google Play. В обоих случаях вы получите возможность добавить локализованные описания и скриншоты для любого используемого в приложении языка.

Более подробную информацию смотрите в разделе: