Important

La traduction est le fruit d’un effort communautaire auquel vous pouvez prendre part. Cette page est actuellement traduite à 95.65%.

5. Localisation

L’interface utilisateur de QGIS est disponible en plusieurs langues.

Une option globale dans les paramètres permet de remplacer la langue de l’interface utilisateur qui a été détectée automatiquement à partir du système d’exploitation.

La représentation des nombres, des devises et des dates varie selon le pays, elle est également modifiable dans les paramètres.

Une autre option dans les paramètres permet de définir si le séparateur numérique des milliers doit être utilisé.

Toutes ces fonctionnalités sont implémentées via la classe QLocale QT qui fournit un support très complet pour la représentation des types numériques et de date.

In order to make this system work a few rules need to be carefully followed when displaying numeric values in the QGIS user interface and when converting user input to integral or floating point variables.

5.1. Conversion de nombres en chaines de caractères.

Pour les chaines qui sont imprimées à l’écran et visibles par les utilisateurs, n’utilisez pas QString::number() car il ne prend pas en compte les options locales et utilise toujours la locale C.

N’utilisez pas non plus l’interpolation de chaînes de caractères, sauf si vous utilisez le suffixe L comme expliqué dans la Documentation QString.

Utilisez QLocale().toString() à la place.

Exemple:

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

Avertissement

Une exception notable à cette règle est la génération de chaînes de caractères qui seront transmises à des applications externes ou à des scripts qui attendent une représentation numérique en C (point comme séparateur décimal et non séparateur de milliers). QString::number() doit être utilisé dans cette situation.

5.2. Conversion des chaînes de caractères saisies en nombres

Lors de la conversion de chaînes de caractères à partir d’une saisie utilisateur en nombres, n’utilisez pas QVariant::toDouble(), QString::toDouble() ou d’autres méthodes ::toDouble() disponibles dans les classes QT car ces méthodes ignorent les paramètres régionaux. La même considération s’applique aux types intégraux et aux méthodes ::toInt() ou ::toLongLong().

QLocale().toDouble() ou QLocale().toInt() et les autres méthodes de conversion QLocale() peuvent être utilisées dans cette situation.

Comme meilleure alternative, l’API QGIS fournit quelques classes qui devraient être utilisées pour les entrées numériques à virgule flottante de l’utilisateur :

QgsDoubleSpinBox affiche le nombre en fonction des paramètres régionaux et des paramètres de l’utilisateur et valide l’entrée de l’utilisateur à l’aide de QgsDoubleValidator.

La classe validateur est tolérante et essaiera d’interpréter l’entrée en vérifiant d’abord la locale de l’utilisateur et en revenant à la locale C si elle ne correspond pas.

La recommandation générale est d’utiliser QgsDoubleSpinBox pour toutes les entrées/sorties de type virgule flottante chaque fois que cela est possible car il est très bien testé et valide correctement l’entrée. Comme alternative, il est possible d’utiliser la classe QgsDoubleValidator indépendamment sur une chaîne de caractères obtenue à partir d’un autre widget (par exemple un simple widget QLineEdit).