SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

Zend Framework入門(14):
多言語対応サイトの作成- Zend_Translate(前編)-

Zend Frameworkによる実践的なPHPアプリケーション開発 14

翻訳ソースの作成

 phpアプリケーションと翻訳ソースの橋渡しをするアダプタには多くの種類があります。ひとまず今回の例で使用したarrayについて解説します。その他のアダプタについては後述する「翻訳アダプタの選択」を参考に、それぞれの特徴を理解し、開発にあったアダプタを選択してください。

 arrayの場合はコード内に直接翻訳を記載します。

 今回の例では、date関数で時間を取得してprintf関数で表示させるために、フォーマットとして「%1$s」を翻訳に含めています。

[リスト2]index.phpの一部
$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関数とフォーマット

 printf関数は指定したフォーマットで引数とする文字列の出力ができる関数です。

[構文] 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番目の引数を文字列として扱う」というフォーマットになります。

次のページ
Zend_Translateオブジェクト生成(翻訳アダプタの生成)

この記事は参考になりましたか?

Zend Framework入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 森山 絵美(モリヤマ エミ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3355 2009/01/05 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー