Importante
La traducción es un esfuerzo comunitario puede unirse. Esta página está actualmente traducida en |progreso de traducción|.
5. Localización
La interfaz de usuario de QGIS está disponible en varios idiomas.
Una opción global en la configuración permite anular el idioma de la interfaz de usuario que se detectó automáticamente desde el sistema operativo.
La representación de números, moneda y fechas varía según el país y también se puede anular en la configuración.
Otra opción en la configuración permite definir si se debe usar el separador numérico de miles.
Todas estas funciones están implementadas a través de la clase QT QLocale que proporcionar un soporte muy completo para la representación de tipos numéricos y de fecha.
Para que este sistema funcione, se deben seguir cuidadosamente algunas reglas al mostrar valores numéricos en la interfaz de usuario de QGIS y al convertir la entrada del usuario en variables integrales o de punto flotante.
5.1. Convertir números en cadenas
Para las cadenas que se imprimen en la pantalla y son visibles para los usuarios, no use QString::number()
porque no tiene en cuenta las opciones de configuración regional y siempre usa la configuración regional C
.
Tampoco use la interpolación de cadenas a menos que use el sufijo L
como se explica en la documentación de QString.
Utilice QLocale().toString()
en su lugar.
Ejemplo:
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
Advertencia
Una notable excepción a esta regla es la generación de cadenas que se pasarán a aplicaciones externas o secuencias de comandos que esperan representación de números C
(punto como separador decimal y sin separador de miles). QString::number()
debe usarse en esta situación.
5.2. Conversión de cadenas de entrada del usuario en números
Cuando conviertas cadenas de entrada del usuario a números no utilices QVariant::toDouble()
, QString::toDouble()
u otros métodos ::toDouble()
disponibles en las clases QT porque estos métodos ignoran la configuración regional. La misma consideración se aplica a los tipos integrales y a los métodos ::toInt()
o ::toLongLong()
.
QLocale().toDouble()
or QLocale().toInt()
and the other QLocale()
conversion methods can be used in this situation.
Como una mejor alternativa, la API de QGIS proporciona algunas clases que deben usarse para la entrada de usuario numérica de coma flotante:
QgsDoubleSpinBox
displays the
number according to user locale and settings and it validates the user
input using QgsDoubleValidator
.
La clase del validador es tolerante e intentará interpretar la entrada comprobando primero la configuración regional del usuario y recurriendo a la configuración regional C
si no hay ninguna coincidencia.
The general recommendation is to use QgsDoubleSpinBox
for all floating point types I/O whenever it is possible because it is very well tested and
it validates the input correctly. As an alternative it is possible
to use the QgsDoubleValidator
class
independently on a string obtained from another widget (e.g., a simple
QLineEdit
widget).