Globalizzare l'app

In Qt sono disponibili strumenti e metodologie per internazionalizzare le app. Per tutti i dettagli, consultare Internazionalizzazione e localizzazione con Qt Quick.

Di seguito viene descritta la procedura generale.

  1. Assicurarsi che il processo di internazionalizzazione venga valutato a livello di file QML, incluso l'utilizzo delle stringhe di testo, la disambiguazione di testo uguale e l'utilizzo di parametri e impostazioni locali.
  2. Usare lo strumento della riga di comando lupdate.exe per generare il file di traduzione di base, quindi copiare questo file e rinominarlo per ogni lingua desiderata.
  3. Usare Qt Linguist per aprire i file e immettere le traduzioni.
  4. In Qt Linguist, scegliere File > Release oppure utilizzare lo strumento della riga di comando lrelease.exe per generare i file delle traduzioni.
  5. Includere i file delle traduzioni nel progetto che verrà convertito in un'app standalone.

Internazionalizzazione di QML

The Qt Company consiglia di completare la seguente procedura per internazionalizzare il codice QML:

  1. Usare qsTr() per tutte le stringhe letterali dell'interfaccia utente.
  2. Aggiungere contesto. Utilizzare le righe di commento per descrivere dove viene utilizzata una stringa, utilizzando una sintassi specifica. //:è un commento per il traduttore, mentre //~ è costituito da informazioni extra opzionali.
  3. Disambiguare i testi identici. Se un termine può avere più significati, aggiungere un secondo parametro per differenziare, ad esempio, text: qsTr("back", "not front"); text: qsTr("back", "go backward")..
  4. Utilizzare %x per inserire parametri in una stringa, ad esempio, text: qsTr("File %1 of %2").arg(counter).arg(total).
  5. Utilizzare %Lx in modo da localizzare i numeri, ad esempio, text: qsTr("%L1").arg(total).
  6. Internazionalizzare date, orari e valute, ad esempio, text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale())).
  7. Utilizzare QT_TR_NOOP() per le stringhe di testo contenenti dati traducibili.
  8. Utilizzare le impostazioni internazionali per estendere le feature di localizzazione, ove possibile.

Per maggiori dettagli su ciascun passaggio, consultare Internazionalizzazione e localizzazione con Qt Quick.

È necessario inoltre valutare l'internazionalizzazione quando si includono immagini nell'app. L'immagine visualizzata può variare in base alla lingua selezionata. Il seguente esempio mostra come rilevare se è utilizzata una lingua da destra a sinistra (RTL) e impostare una proprietà definita dall'utente denominata mirror. Questa proprietà viene quindi utilizzata per determinare quale immagine verrà visualizzata.

    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 è uno strumento della riga di comando Qt disponibile nella cartella di installazione di AppStudio.

Per eseguirlo, aprire una finestra di comando nella directory del progetto, quindi eseguire il comando seguente. Tenere presente che il periodo utilizzato in ciascuno degli esempi seguenti rappresenta la directory attuale, che è la cartella dell'app contenente i file .qml.

Su Windows:

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

Su macOS:

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

Su Ubuntu:

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

Viene creato un nuovo file denominato MyApp_en.ts.

Le traduzioni per nuove lingue vengono create copiando e ridenominando il file MyApp_en.ts una volta per ogni lingua richiesta e sostituendo en con il codice lingua per ogni lingua richiesta. Per modificare i file .ts, usare Qt Linguist.

Per ulteriori informazioni, fare riferimento alla sezione Uso di lupdate.

Qt Linguist

Linguist è uno strumento dell'interfaccia grafica utente disponibile nella cartella di installazione di AppStudio. Aprire i file .ts creati con lupdate in Linguist, quindi tradurre le singole stringhe. Solo le stringhe contrassegnate come completate verranno elaborate dallo strumento lrelease.

Per ulteriori informazioni, consultare la documentazione di Qt Linguist.

lrelease

È possibile generare i file della versione nei modi seguenti:

  • Aprire il file .ts completato in Linguist, quindi nel menu File scegliere Release. In questo modo viene creato un file .qm corrispondente al file .ts.
  • Usare lo strumento della riga di comando. lrelease è uno strumento di comando Qt disponibile nella cartella di installazione di AppStudio. I file di traduzione di runtime possono essere generati eseguendo il seguente comando, che elenca ogni file lingua da generare:

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

  • Trasferire l’opzione -help su lrelease per visualizzare le opzioni supportate.

Per ulteriori informazioni, consultare la sezione Utilizzo di lrelease.

Distribuire i file di localizzazione con l'app

Prima di usare lo strumento Crea per creare i file di installazione, assicurarsi di includere i file .qm nel progetto. Segue una convenzione di denominazione cartella consigliata:

MyApp > languages > qml_localecode.qm

Ad esempio, se l'app contiene le localizzazioni per tedesco, francese e cinese, includere i seguenti file:

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

È necessario anche informare l'app su dove trovare questi file. Questa informazione è definita nel file appinfo.json. Aprire appinfo.json in un editor di testo e aggiungere la seguente proprietà:

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

Nell'esempio precedente, il nome file è qml. Non è necessario includere il carattere di sottolineatura e il codice lingua. Il nome cartella nell'esempio di codice è languages, che corrisponde anche all'esempio precedente. È possibile scegliere i propri nomi cartella e file; accertarsi tuttavia di definirli nel file appinfo.json.

Quando si esegue l'app su un dispositivo le cui impostazioni locali corrispondono a una lingua per la quale è stato fornito un file di traduzione, l'app visualizzerà automaticamente le stringhe dal file corretto. Un'alternativa a scopo di test è il parametro della riga di comando --locale, che sovrascriverà le impostazioni locali con qualunque codice locale incluso nel parametro. Ad esempio, aggiungendo --locale fr alla riga di comando, l'app verrà avviata utilizzando i file di localizzazione in lingua francese. Questi parametri della riga di comando possono essere utilizzati anche quando si esegue l'applicazione in AppStudio, impostando il parametro nel campo Argomenti della riga di comando, nella scheda Progetti di Qt Creator.

Quando si utilizza un'app provvista di file di traduzione forniti e configurati, è possibile caricare all'interno dell'app diversi file di traduzione utilizzando il metodo loadTranslatornel componente AppFramework.

Localizzare la presentazione dello store

Se si sceglie di distribuire l'app tramite uno store, ed è stato fatto lo sforzo per globalizzare l'app, valutare anche la possibilità di localizzare la presentazione dello store. App Store e Google Play offrono entrambi la possibilità di localizzare la presentazione dello store. In entrambi i casi, è possibile fornire descrizioni e schermate localizzate per ogni lingua dello store nel singolo invio dell'app.

Per ulteriori informazioni, consultare i seguenti argomenti: