翻訳ソースの作成
phpアプリケーションと翻訳ソースの橋渡しをするアダプタには多くの種類があります。ひとまず今回の例で使用したarrayについて解説します。その他のアダプタについては後述する「翻訳アダプタの選択」を参考に、それぞれの特徴を理解し、開発にあったアダプタを選択してください。
arrayの場合はコード内に直接翻訳を記載します。
今回の例では、date関数で時間を取得してprintf関数で表示させるために、フォーマットとして「%1$s」を翻訳に含めています。
$ja = array(
'welcome' => 'ようこそ',
'time' => '今の時刻は %1$s です。'
);
$en = array(
'welcome' => 'welcome',
'time' => 'It is %1$s now.'
);
$fr = array(
'welcome' => 'accueil',
'time' => 'C\'est maintenant %1$s .'
);
上記のように、言語ごとに、インデックスとなるキーと翻訳された値を連想配列に格納していきます。多数の言語に対応する場合はarray型の変数が増え、翻訳箇所が多い場合には配列への格納数が増えてしまうため向いていません。ただ、Zend_Translateの機能を確認するには一番簡単なアダプタと言えます。
printf関数は指定したフォーマットで引数とする文字列の出力ができる関数です。
int printf(string format ,mixed arg)
文字列formatには引数argを格納するために「%」ではじまるフォーマットを含めます。引数argはそのフォーマットに指定された形で出力されることになります。フォーマットの指定方法について下表を参照してください。
| 名称 | 記号 | 意味 |
| 符号指定子 | +,- | 引数に符号を付与する。デフォルトでは負の値にしか付与されない。PHP4.3.0以降で使用可能。 |
| パディング指定子 | 文字列が指定する長さになるまでどのような文字で埋めるか。デフォルトでは空白。空白か「0」を指定する。それ以外を指定する場合はその文字の前に「'」を記載する(「'*」など)。 | |
| アラインメント指定子 | 文字を左右どちらに寄せるか。デフォルトでは右寄せ。左寄せにする場合は「-」を指定。 | |
| 表示幅指定子 | 最低何桁で表示するかを指定。 | |
| 精度指定子 | 浮動小数点数を何桁まで表示するか。文字列に対しては文字数の切り捨て位置となる。 | |
| 型指定子 | b | 引数を整数とする。バイナリの数値として表現。 |
| c | 引数を整数とする。ASCII値の文字として表現。 | |
| d | 引数を整数とする。10進数として表現。 | |
| e | 引数を科学記法とする(例 1.2e+2など)。 | |
| u | 引数を整数とする。符号なしの10進数として表現。 | |
| f | 引数をdoubleとする。浮動小数点数として表現。 | |
| F | 引数をfloatとする。浮動小数点数として表現。PHP4.3.10およびPHP5.0.3以降で使用可能。 | |
| o | 引数を整数とする。8進数で表現。 | |
| s | 引数を文字列とする。 | |
| x | 引数を整数とする。小文字の16進数で表現。 | |
| X | 引数を整数とする。大文字の16進数で表現。 |
また引数argは「,」で続けて複数記述できます。その際フォーマットでは1番目の引数を「1$」、2番目の引数を「2$」で指定することができます。
今回の例である「%1$s」は「1番目の引数を文字列として扱う」というフォーマットになります。
