Globalisieren Ihrer App

Qt stellt Werkzeuge sowie eine Methode zur Internationalisierung Ihrer App bereit. Weitere Informationen finden Sie unter Internationalization and Localization with Qt Quick.

Hierzu werden folgende allgemeine Schritte ausgeführt:

  1. Stellen Sie sicher, dass die Internationalisierung in Ihren QML-Dateien berücksichtigt wird, darunter die Verwendung von Textzeichenfolgen, die eindeutige Verwendung identischer Texte und die Verwendung von Parametern und Gebietsschemas.
  2. Verwenden Sie das Befehlszeilenwerkzeug "lupdate.exe", um die Basisübersetzungsdatei zu generieren und sie für jede erforderliche Sprache zu kopieren und zu benennen.
  3. Öffnen Sie diese Dateien mit Qt Linguist, und stellen Sie die Übersetzungen bereit.
  4. Wählen Sie in Qt Linguist Datei > Version aus, oder generieren Sie die Übersetzungsdateien mit dem Befehlszeilendienstprogramm "lrelease.exe".
  5. Beziehen Sie diese Übersetzungsdateien in das Projekt ein, das in eine eigenständige App umgewandelt wird.

Internationalisieren von QML

The Qt Company empfiehlt die folgenden Schritte, um QML zu internationalisieren:

  1. Verwenden Sie qsTr() für alle Literalzeichenfolgen der Benutzeroberfläche.
  2. Fügen Sie Kontext hinzu. Beschreiben Sie in Kommentarzeilen, wo eine Zeichenfolge verwendet wird, und verwenden Sie eine bestimmte Syntax. //: ist ein Kommentar für den Übersetzer, während es sich bei //~ um optionale Zusatzinformationen handelt.
  3. Verwenden Sie identische Texte eindeutig. Wenn ein Begriff mehrere Bedeutungen haben kann, fügen Sie zur Unterscheidung einen zweiten Parameter hinzu. Beispiel: text: qsTr("back", "not front"); text: qsTr("back", "go backward").
  4. Verwenden Sie %x, um Parameter in eine Zeichenfolge einzufügen. Beispiel: text: qsTr("File %1 of %2").arg(counter).arg(total).
  5. Verwenden Sie %Lx, damit Zahlen lokalisiert werden. Beispiel: text: qsTr("%L1").arg(total).
  6. Internationalisieren Sie Datumsangaben, Uhrzeiten und Währungen. Beispiel: text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale())).
  7. Verwenden Sie QT_TR_NOOP() für übersetzbare Datentextzeichenfolgen.
  8. Verwenden Sie nach Möglichkeit Gebietsschemas, um Lokalisierungsfunktionen zu erweitern.

Weitere Informationen zu jedem Schritt finden Sie unter Internationalization and Localization with Qt Quick.

Sie sollten auch die Internationalisierung berücksichtigen, wenn Sie Bilder in Ihre App einbeziehen. Das Bild, das Sie anzeigen, weicht je nach ausgewählter Sprache möglicherweise ab. Im folgenden Beispiel wird veranschaulicht, wie erkannt wird, ob eine von rechts nach links verlaufende Sprache verwendet wird. Zudem wird eine benutzerdefinierte Eigenschaft mit dem Namen mirror festgelegt. Anhand dieser Eigenschaft wird anschließend ermittelt, welches Bild angezeigt wird.

    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" ist ein Qt-Befehlszeilenwerkzeug, das sich im Installationsordner von AppStudio befindet.

Um es zu starten, öffnen Sie ein Befehlszeilenfenster im Projektverzeichnis, und führen Sie den folgenden Befehl aus. Beachten Sie, dass der in den folgenden Beispielen verwendete Punkt das aktuelle Verzeichnis darstellt, also den App-Ordner, der .qml-Dateien enthält.

Unter Windows:

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

Unter macOS:

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

Unter Ubuntu:

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

Es wird eine neue Datei mit dem Namen "MyApp_en.ts" erstellt.

Übersetzungen für neue Sprachen werden erstellt, indem die Datei "MyApp_en.ts" einmal pro Sprache kopiert und umbenannt und das "en" durch den Sprachcode der jeweils erforderlichen Sprache ersetzt wird. Die .ts-Dateien können dann mit Qt Linguist bearbeitet werden.

Weitere Informationen finden Sie unter Verwenden von lupdate.

Qt Linguist

Linguist ist ein GUI-Werkzeug, das sich im Installationsordner von AppStudio befindet. Sie öffnen die .ts-Dateien, die mit lupdate in Linguist erstellt wurden, und fügen die Übersetzungen für jede der aufgelisteten Zeichenfolgen hinzu. Es werden nur als fertig gestellt gekennzeichnete Zeichenfolgen von dem Werkzeug "lrelease" verarbeitet.

Weitere Informationen finden Sie im Qt Linguist Manual.

lrelease

Es gibt mehrere Möglichkeiten zur Erstellung der Versionsdateien:

  • Öffnen Sie die abgeschlossene .ts-Datei in Linguist, und wählen Sie im Menü Datei den Eintrag Version aus. Es wird eine .qm-Datei erstellt, die der .ts-Datei entspricht.
  • Verwenden Sie das Befehlszeilenwerkzeug. Irelease ist ein Qt-Befehlszeilenwerkzeug, das sich im Installationsordner von AppStudio befindet. Die Runtime-Übersetzungsdateien können durch Ausführung des folgenden Befehls generiert werden, wobei jede zu generierende Sprachdatei aufgelistet wird:

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

  • Übergeben Sie die Option -help an lrelease, um die unterstützten Optionen anzuzeigen.

Weitere Informationen finden Sie unter Verwenden von lrelease.

Bereitstellen von Lokalisierungsdateien mit Ihrer App

Nehmen Sie die .qm-Dateien in Ihr Projekt auf, bevor Sie mit dem Werkzeug "Erstellen" Installationsdateien erstellen. Die nachfolgende Ordnernamenskonvention wird empfohlen:

MyApp > languages > qml_localecode.qm

Wenn Ihre App beispielsweise die Lokalisierung für Deutsch, Französisch und Chinesisch enthält, fügen Sie die folgenden Dateien ein:

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

Der App müssen außerdem die entsprechenden Informationen zum Speicherort dieser Dateien zur Verfügung gestellt werden. Diese Informationen werden in der Datei "appinfo.json" definiert. Öffnen Sie appinfo.json in einem Texteditor, und fügen Sie die folgende Eigenschaft hinzu:

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

Im obigen Beispiel lautet der Dateiname qml. Der Unterstrich und der Sprachcode müssen nicht eingefügt werden. Der Ordnername im Codebeispiel lautet languages, was dem Beispiel oben entspricht. Sie können eigene Ordner- und Dateinamen auswählen. Stellen Sie jedoch sicher, dass diese in der Datei "appinfo.json" benannt sind.

Wenn Sie die App auf einem Gerät mit einem Systemgebietsschema ausführen, das einer Sprache entspricht, für die Sie eine Übersetzungsdatei bereitgestellt haben, zeigt die App automatisch Zeichenfolgen aus der richtigen Datei an. Für Testzwecke eignet sich alternativ der Befehlszeilenparameter --locale, der das Systemgebietsschema durch einen beliebigen von Ihnen im Parameter angegebenen Gebietsschemacode überschreibt. Fügen Sie beispielsweise --locale fr an die Befehlszeile an, um die App mit Lokalisierungsdateien in französischer Sprache zu starten. Diese Befehlszeilenparameter können ebenfalls verwendet werden, wenn Sie die App in AppStudio ausführen. Legen Sie dazu in Qt Creator den Parameter im Feld Command line arguments: auf der Registerkarte Projects fest.

Bei Verwendung einer App, für die Übersetzungsdateien bereitgestellt und eingerichtet wurden, können verschiedene Übersetzungsdateien innerhalb der App geladen werden, indem die loadTranslator-Methode in der AppFramework-Komponente verwendet wird.

Lokalisieren Ihres Store-Eintrags

Wenn Sie Ihre App über einen Store verteilen möchten und sich die Mühe gemacht haben, Ihre App zu globalisieren, können Sie Ihren Store-Eintrag ebenfalls lokalisieren. Store-Einträge können im App Store wie auch in Google Play lokalisiert werden. In beiden Fällen haben Sie beim Einreichen einzelner Apps die Möglichkeit, lokalisierte Beschreibungen und Bildschirmaufnahmen für jede Store-Sprache bereitzustellen.

Weitere Informationen finden Sie unter folgenden Themen: