Importante

A tradução é um esforço comunitário você pode contribuir. Esta página está atualmente traduzida em 78.26%.

5. Localização

A interface de usuário do QGIS está disponível em vários idiomas.

Uma opção global nas configurações permite substituir o idioma da interface do usuário que foi detectado automaticamente no sistema operacional.

The representation of numbers, currency and dates varies according to the country and it is also overridable in the settings.

Outra opção nas configurações permite definir se o separador numérico de milhares deve ser usado.

All these features are implemented through the QLocale QT class which provides a very complete support for numeric and date types representation.

Para fazer este sistema funcionar, algumas regras precisam ser seguidas cuidadosamente ao exibir valores numéricos na interface do usuário do QGIS e ao converter a entrada do usuário em variáveis ​​integrais ou de ponto flutuante.

5.1. Convertendo números em strings

Para strings que são impressas na tela e visíveis para os usuários, não use QString::número() porque não leva em consideração as opções de localidade e sempre usa C localidade.

Also do not use string interpolation unless you use the L suffix as explained in QString documentation.

Use QLocalidade().toString() em vez disso.

Exemplo:

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

Aviso

Uma notável exceção a esta regra é a geração de strings que serão passadas para aplicações externas ou scripts que esperam representação numérica C (ponto como separador decimal e sem separador de milhares). QString::número() deve ser usado nesta situação.

5.2. Convertendo strings de entrada do usuário em números

Ao converter strings da entrada do usuário para números não use VarianteQ::paraoDobro(), QString::paraoDobro() ou outros métodos ::paraoDobro() disponíveis em classes QT porque estes métodos ignoram as configurações de localidade. A mesma consideração se aplica a tipos integrais e métodos ::paraInt() ou ::paraLongoLongo().

QLocale().toDouble() or QLocale().toInt() and the other QLocale() conversion methods can be used in this situation.

Como uma alternativa melhor, a API do QGIS fornece algumas classes que devem ser usadas para entrada numérica de ponto flutuante do usuário:

:classe:`QgsCaixadeGiroDuplo <qgis.gui.QgsDoubleSpinBox>` exibe o número de acordo com a localidade e configurações do usuário e valida a entrada do usuário usando :classe:`QgsCaixadeGiroDuplo <qgis.gui.QgsDoubleValidator>`.

A classe validadora é tolerante e tentará interpretar a entrada verificando primeiro a localidade do usuário e voltando para a localidade C se não houver correspondência.

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).