エンジニアコラム

山口 山口 裕司

1 0

てんでダメな話

2018.02.26

てんでダメな話

アプリの多言語対応での落とし穴

キクスイ製アプリケーションソフトは、ユニコードアプリといって日本語Windowsでは日本語を、その他のWindowsでは自動的に英語を表示します。ところが、あるアプリをヨーロッパで起動するとエラーとなって動かないという問題が発生しました。

数値表記ルールは万国共通ではない

原因は、小数点表記のローカルルールでした。実はフランスやドイツ、イタリアなどのヨーロッパの国々では小数点表記にピリオド「.」でなく、カンマ「,」が使われているのです。これは貿易実務をしている方ならご存知のことかもしれません。
たとえば、Excelで直接読み込めるCSVファイルはComma Separated Valueと言うように、カンマをセパレータとしたファイルですが、ヨーロッパでは小数点とセパレータがカンマでは都合が悪いので、セミコロンをセパレータとして使いSemicolon Separated Valueとなりますが、それでも呼称(CSVファイル)は同じです。

エラーのメカニズムとしてはこのようなものです。
たとえば「*IDN?コマンド」で機種情報を問い合わせると、菊水の電源はヨーロッパの空気を感じ取るように作られてはいないので「KIKUSUI,PCR6000LE,AB123456,5.02」と返してきます。これはカンマ区切りの文字列で「KIKUSUI,モデル名,シリアルナンバー,バージョン」を意味します。そこから、バージョン情報を抜き取り大小比較するために文字列を数値に変換します。もし日米等のWindowsであれば「5.02」 を数値に型変換しても何の問題はありません。
しかしヨーロッパ(のWindows)では、文字列「5.02」を数値に型変換処理しても表記が「5.02」のままだと数値として認識されないのでエラーとなります。ここは「5,02」に変換されなければならないわけです。

本サイトの閲覧には会員登録(無料)が必要です。

会員登録はこちら

×