重要
翻訳は あなたが参加できる コミュニティの取り組みです。このページは現在 91.30% 翻訳されています。
5. ローカライズ
QGISのユーザーインタフェースは、複数の言語が用意されています。
設定にあるグローバルオプションによりオペレーティングシステムから自動的に検出されたユーザーインタフェース言語を上書きすることができます。
数字、通貨記号及び日付は国によって異なり、それも設定で上書きすることができます。
設定にある他のオプションでは、千の位のセパレータを使うかどうかを決めることができます。
これらの機能の全ては、数字と日付の表現の完全なサポートを提供する Qlocale QTクラスにより実装されています。
QGISインタフェースで数値を表示させる際やユーザーの入力を整数や浮動小数点に変換 する際にこのシステムを機能させるためには、いくつかの規則を慎重に守ることが必要です。
5.1. 数字を文字に変換する
QString::number()
はロケールオプションを考慮せず、常に C
ロケールを使用するため、画面に表示され、ユーザーから見える文字列には使用しないでください。
また QString documentation で説明されているように、 L
サフィックスを使用しない限り、文字列補間は使用しないでください。
代わりに 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()
or QLocale().toInt()
and the other QLocale()
conversion methods can be used in this situation.
より良い選択肢として、QGIS APIは、浮動小数点数値のユーザー入力に使用すべきいくつかのクラスを提供します:
QgsDoubleSpinBox
はユーザーのロケールや設定に合わせて数字を表示し、 QgsDoubleValidator
によってユーザーの入力を検証します。
バリデータクラスは寛容で、まずユーザーのロケールをチェックし、 一致しない場合は C
ロケールにフォールバックして入力を解釈しようと試みます。
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).