Importante
A tradução é um esforço comunitário você pode contribuir. Esta página está atualmente traduzida em 100.00%.
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.
A representação de números, moeda e datas varia de acordo com o país e também é substituível nas configurações.
Outra opção nas configurações permite definir se o separador numérico de milhares deve ser usado.
Todos esses recursos são implementados através da classe QLocale <https://doc.qt.io/qt-5/qlocale.htm>`_ QT que fornece um suporte muito completo para representação numérica e de tipos de dados.
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.
Também não use interpolação de string a menos que você use o sufixo L
conforme explicado na documentação do QString.
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()
.
QLocalidade().paraoDobro()
ou QLocalidade().toInt()
e os outros métodos de conversão QLocalidade()
podem ser usados nesta situação.
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.
A recomendação geral é usar :classe:`CaixadeGiroDuploQgs <qgis.gui.QgsDoubleSpinBox>` para todos os tipos de E/S de ponto flutuante sempre que possível porque é muito bem testado e valida a entrada corretamente. Como alternativa, é possível usar a classe :classe:`ValidadorDuploQgs <qgis.gui.QgsDoubleValidator>` independentemente de uma string obtida de outro widget (por exemplo, um widget QLineEdit
simples).