Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/12-6
12-6 日本に関する実装の注意点
このセクションでは、日本向けにローカライズされるアプリケーションに関するプログラミング慣習について説明します。以下のトピックがあります。
- 日本語の文字エンコーディング
- 日本語の文字入力
- カリキュレータボタン
- UI オブジェクトにおける日本語文字列の表示
- エラーメッセージの表示
- 中国語のフォント
日本語の文字エンコーディング
日本語システムで使用される文字エンコーディングは、Microsoft のコードページ 932 をベースにしています。完全な 932 文字セット(JIS第一・第二水準)はスタンダードとラージ両方のフォントサイズでサポートされています。これら2つのフォントのボールド体バージョンには、7 ビット ASCII レンジについてはボールド体のフォントが含まれていますが、いくつかのハンドヘルドでは半角カナ文字やマルチバイト文字についてはボールド体が提供されません。
日本語の文字入力
現在の日本語デバイスでは、日本語の入力には Latin(ASCII) 文字を使用し、フロントエンドプロセッサ(FEP) と呼ばれる特殊なソフトウェアによってひらがなやカタカナに変換しています。さらに、FEP を使用してひらがなの発音にあわせてひらがなと漢字の混合に変換することもできます(かな漢字変換)。
図 12.1 日本語ハンドヘルドの入力エリア
日本語ハンドヘルドには FEP の文字入力と変換を制御するための追加ボタンが4つあります。これら4つの FEP ボタンは左端のアイコンと手書き文字認識エリアの間に垂直に並べられています。一番上の FEP ボタンは FEP に対してインラインテキストのかな漢字変換を指示します。次のボタンはインラインテキストを確定し、変換セッションを終了します。3つめのボタンはひらがなとカタカナの入力モードを切り替えます。最後のボタンは FEP のオン/オフを切り替えます。
日本語の入力は常にインラインです。これは、文字入力と変換がフィールド内部でダイレクトに行なわれることを意味します。フィールドのコードはイベントを FEP に渡し、FEP は表示すべきテキストの情報を返します。
インライン変換の間、Graffiti または Graffiti2 のスペースストロークは FEP の変換ボタンのショートカットとして機能し、リターンストロークは FEP の確定ボタンのショートカットとして機能します。
カリキュレータボタン
現在の日本語デバイスでは、シルクスクリーンのカリキュレータボタンは calcChr を生成しません。そのかわり、このボタンはイベントの data.keyDown.chr フィールドに keyboardChr を、data.keyDown.modifiers フィールドに commandKeyMask をそれぞれ設定して keyDown イベントを生成します。
UI オブジェクトにおける日本語文字列の表示
画面スペースを節約するために、カタカナ文字だけを使用する UI 要素( ボタンやメニュー項目、ポップアップリストなど )では半角カナを使用するべきです。文字列にひらがなとカタカナ、漢字、ローマ字などが混在する場合は全角カナを使うようにします。
エラーメッセージの表示
コードは、エラー状態を確認するために ErrFatalDisplayIf や ErrNonFatalDisplayIf マクロを使用している場合があります。エラーが発生すると、システムはマクロに渡したメッセージとともにエラーの発生したファイル名と行番号を表示します。時にこれらのメッセージはハードコーディングされた文字列として指定されます。日本語システムでは、これら2つのマクロに渡されたメッセージを Palm OS がトラップし、エラーの発生を説明する一般的なメッセージを表示します。
予期しないエラーには一貫して ErrFatalDisplayIf と ErrNonFatalDisplayIf だけを使用すべきです。エンドユーザーが目にするエラーにこれらを使用してはいけません。ユーザーにエラーの発生を知らせたい場合、ErrFatalDisplayIf や ErrNonFatalDisplayIf のかわりにローカライズ可能なリソースを使用してメッセージを表示して下さい。
中国語のフォント
いくつかの中国語フォント ―― 特に標準ディスプレイにおける 9 ポイントのフォント ―― では、利用可能な縦方向のスペースを全て使用しています。このため、フォーム要素のレイアウトでは正しい縦方向の配置が困難になるかもしれません。
※訳注:上記の「中国語」は Chinese と表記されています。 このページ自体が日本語デバイスの実装に関するもの なので、「漢字」と訳すべきか悩みましたが、この ページ内で Hiragana などと並んで Kanji と表記し ている部分があるため、Chinese は「中国語」のこ とを指していると解釈しました。