重要
翻訳は あなたが参加できる コミュニティの取り組みです。このページは現在 86.96% 翻訳されています。
5. ローカライズ
QGISのユーザーインタフェースは、複数の言語が用意されています。
設定にあるグローバルオプションによりオペレーティングシステムから自動的に検出されたユーザーインタフェース言語を上書きすることができます。
The representation of numbers, currency and dates varies according to the country and it is also overridable in the settings.
設定にある他のオプションでは、千の位のセパレータを使うかどうかを決めることができます。
All these features are implemented through the QLocale QT class which provides a very complete support for numeric and date types representation.
QGISインタフェースで数値を表示させる際やユーザーの入力を整数や浮動小数点に変換 する際にこのシステムを機能させるためには、いくつかの規則を慎重に守ることが必要です。
5.1. 数字を文字に変換する
QString::number() はロケールオプションを考慮せず、常に C ロケールを使用するため、画面に表示され、ユーザーから見える文字列には使用しないでください。
Also do not use string interpolation unless you use the L suffix as explained in
QString documentation.
代わりに QLocale().toString() を使ってください。
例:
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
警告
この規則の顕著な例外は、 C 数値表現(ドットを小数の区切りとして、千の区切りがない)を期待する外部のアプリケーションやスクリプトに渡す文字列を生成することです。このような場合には QString::number() を使用する必要があります。
5.2. ユーザー入力文字列を数字に変換する
ユーザー入力の文字列を数値に変換する場合、 QVariant::toDouble() や QString::toDouble() 、QTクラスで利用できる他の ::toDouble() メソッドは使用しないでください、これらの方法はロケール設定を無視します。同じことが、整数型と ::toInt() や ::toLongLong() のメソッドにも当てはまります。
このような場合には QLocale().toDouble() や QLocale().toInt() などの QLocale() 変換メソッドを使用することができます。
より良い選択肢として、QGIS APIは、浮動小数点数値のユーザー入力に使用すべきいくつかのクラスを提供します:
QgsDoubleSpinBox はユーザーのロケールや設定に合わせて数字を表示し、 QgsDoubleValidator によってユーザーの入力を検証します。
バリデータクラスは寛容で、まずユーザーのロケールをチェックし、 一致しない場合は C ロケールにフォールバックして入力を解釈しようと試みます。
一般的には、全ての浮動小数点型のI/Oに対して QgsDoubleSpinBox を使用することをお勧めします。なぜなら非常によくテストされていて、正しく入力を検証してくれるからです。別の方法として、他のウィジェット(例えば、単純な QLineEdit ウィジェット)から取得した文字列に対して QgsDoubleValidator クラスを独立して使用することが可能です。