Qt содержит инструменты и методы для интернационализации приложения. Для подробной информации см.Интернационализация и локализация в Qt Quick.
Основные шаги выглядят так:
- Убедитесь, что в файлах QML учитывается возможность интернационализации, в т.ч.: используются текстовые строки, не допускающие различного толкования идентичного текста, используются параметры и локали.
- Используйте инструмент командной строки lupdate.exe для генерации базового файла перевода, затем скопируйте базовый файл перевода и присвойте ему имя в соответствии с каждым требующимся языком.
- Qt Linguist для открытия этих файлов и перевода.
- В Qt Linguist выберите Файл > Версия или используйте инструмент командной строки lrelease.exe для генерации файлов перевода.
- Включите эти файлы перевода в проект, из которого будет создаваться отдельное приложение.
Интернационализация QML
The Qt Company рекомендует выполнить следующие шаги для интернационализации QML:
- Используйте qsTr() для всех буквенных строк интерфейса.
- Добавьте контекстное описание. Используйте комментирование с применением специального синтаксиса для описания того, где используется строка. //: является комментарием для переводчика, а //~ - дополнительной информацией.
- Текст, не допускающий различного толкования. Если у термина есть несколько значений, добавьте второй параметр, чтобы их различать, например, text: qsTr("back", "not front"); text: qsTr("back", "go backward").
- Используйте %x для вставки параметров в строку, например, text: qsTr("File %1 of %2").arg(counter).arg(total).
- Используйте %Lx, чтобы числа были локализованы, например, text: qsTr("%L1").arg(total).
- Интернационализируйте даты, время и валюты, например, text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale())).
- Используйте QT_TR_NOOP() для переводимых текстовых строк данных.
- Используйте языковую установку для того, чтобы локализованные объекты везде, где это возможно.
Для подробной информации о каждом шаге см.Интернационализация и локализация в 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. В обоих случаях вы получите возможность добавить локализованные описания и скриншоты для любого используемого в приложении языка.
Более подробную информацию смотрите в разделе:
- Информация о локализации App Store для Apple App Store
- Перевод и локализация приложения для Google Play.