東芝T-01Aが011から始まる番号へ電話をかけられない件
先週発売開始された東芝製のWindows Mobile機"T-01A"ですが、011から始まる番号へ電話をかけられない、という不具合が発生してしまいました。
国内電話が国際電話に? ドコモ端末また販売停止
http://sankei.jp.msn.com/economy/business/090622/biz0906221756009-n1.htm
要するに、国際電話識別番号(国際プレフィックス番号)が日本では現在"010"であるところを、アメリカ/カナダなどの"011"でプログラムしていた、ということのようです。(ちなみに、ヨーロッパでは"00"であることが多いようです)
※これ、設定可能にしておかないと、逆にアメリカで"011"から始まる番号が国際電話と認識されない、とかなりそうですね。
Windows/WindowsCEではこのような地域によって異なる文化的な差異を"ロケール"または"NLS関数"によってハンドリングしています。たとえば日本のロケールIDは0x0411です。この情報はOSのビルド時にwince.nlsというバイナリデータファイルにまとめられ、OS起動時にカーネル内に読み込まれます。
OSが起動した後は、たとえばGetDateFormat()、GetTimeFormat()のようなNLS対応のAPIにより利用されるわけですが、国際電話識別番号はNLS関数により取得することはできないみたいですね。
その代わり、現状ではTAPIの"場所の設定"で国際電話のときの電話番号パターンを設定できるのですが、これはロケールにより自動で切り替わるようにはなっておらず、事実上使えないですね。(CE6でもロケール0411の場合の国際プレフィックスの規定値が"001"のままなのが笑えます) CellCore/exTAPIには何らかの仕組みがあるのでしょうか?
ちなみに、NLS対応のWindows CE APIは以下でリストされています。
National Language Support (NLS) Functions
http://msdn.microsoft.com/en-us/library/aa912043.aspx