Importante
La traduzione è uno sforzo comunitario you can join. Questa pagina è attualmente tradotta al 100.00%.
5. Localizzazione
L’interfaccia utente di QGIS è disponibile in più lingue.
Un’opzione globale nelle impostazioni permette di sovrascrivere la lingua dell’interfaccia utente che è stata rilevata automaticamente dal sistema operativo.
La rappresentazione di numeri, valuta e date varia a seconda del paese ed è anche sovrascrivibile nelle impostazioni.
Un’altra opzione nelle impostazioni permette di definire se deve essere usato il separatore numerico delle migliaia.
Tutte queste funzionalità sono implementate attraverso la classe QT https://doc.qt.io/archives/qt-5.15/qlocale.html che fornisce un supporto molto completo per la rappresentazione di tipi numerici e di date.
Per far si che questo sistema possa funzionare è necessario seguire attentamente alcune regole quando si visualizzano valori numerici nell’interfaccia utente di QGIS e quando si converte l’input dell’utente in variabili intere o in virgola mobile.
5.1. Conversione di numeri in stringhe
Per le stringhe che sono visualizzate sullo schermo e visibili agli utenti non usare QString::number() perché non prende in considerazione le opzioni di localizzazione e usa sempre il locale C.
Inoltre non usare l’interpolazione delle stringhe a meno che tu non utilizzi il suffisso L come spiegato nella documentazione di QString documentation.
Utilizzare invece QLocale().toString().
Esempio:
const QString localizedNumber = QLocale().toString( 1234.56 );
// localizedNumber will be: 1,234.56 using english or "C" locale
// 1.234,56 using italian locale
// 1234.56 using english or "C" locale without thousands separator
// 1234,56 using italian locale without thousands separator
Avvertimento
Una notevole eccezione a questa regola è la generazione di stringhe che saranno passate ad applicazioni o script esterni che si aspettano una rappresentazione numerica C (punto come separatore decimale e nessun separatore delle migliaia). QString::number() deve essere usato in questa situazione.
5.2. Conversione di stringhe in ingresso dell’utente in numeri
Quando si convertono stringhe dall’input dell’utente a numeri non usare QVariant::toDouble(), QString::toDouble() o altri metodi ::toDouble() disponibili nelle classi QT perché questi metodi ignorano le impostazioni locali. La stessa considerazione si applica ai tipi interi e ai metodi ::toInt() o ::toLongLong().
In questa situazione è possibile utilizzare QLocale().toDouble() o QLocale().toInt() e gli altri metodi di conversione QLocale().
Come alternativa migliore, QGIS API fornisce alcune classi che dovrebbero essere utilizzate per l’input numerico in virgola mobile dell’utente:
QgsDoubleSpinBox visualizza il numero secondo la lingua e le impostazioni dell’utente e valida l’input dell’utente usando QgsDoubleValidator.
La classe del validatore è tollerante e cercherà di interpretare l’input controllando prima la lingua dell’utente e tornando alla sua lingua C se non c’è corrispondenza.
La raccomandazione generale è di usare QgsDoubleSpinBox per tutti i tipi di I/O in virgola mobile, quando è possibile, perché è molto ben testata e convalida correttamente l’input. In alternativa, è possibile utilizzare la classe QgsDoubleValidator indipendentemente da una stringa ottenuta da un altro widget (ad esempio, un semplice widget QLineEdit).