単数形の場合PHPや各種フレームワーク等でシステムを国際化するために用意する辞書ファイル(poファイル)では、単数形・複数形の記述が可能です。以下、複数形の必要ない言語のpoファイル例です。"リンゴ"~こんな感じで、msgidにキーとなる文章を、msgstrに翻訳された文章をどんどん書いていきます。※但し、poファイルは自動翻訳の辞書ではなく単なる文字列置き換え用のリストなので、単語単位ではなく文章単位で入力すべきです。読み込むとこんな感じ。実際に翻訳されるとこんな感じになります。使用して変換している例です。ちなみに、WordPressだと_e()、CakePHPだと__()等のラッパー関数で置き換わっています。日本語では特に必要としないですが、英語圏などは単数形・複数形の表現があります。この場合、poファイルのカタログ情報(ヘッダ情報)を変更し、さらに翻訳の書き方もちょっと変わってきます。(通常の単数形の形ももちろん書けます。)以下、ちょっと無理矢理ですが、日本語で複数形の表現に対応してみました。"%d個のオレンジ達"Poeditで読み込むとこんな感じで複数の入力が可能になってます。実際の変換はこうなります。使用して、判断用に実際の数を引数に渡して変換している例です。WordPressだと_n()、CakePHPだと__n()等のラッパー関数で置き換わっています。1個の時のみ単数形になっており、0個と2個以上の場合に複数形になっていますね。0個が複数形ってちょっと不思議な気もしますが、"0=いくつあるかわからない"という意味合いなんだと思います。上記に記載したpoファイルのサンプルで、Plural-Forms:というヘッダがありますが、単数形と複数形で宣言方法が違います。plural=(n!=1);\n"npluralsnpluralsには変化するパターンの数をセットします。国によっては変化形が複数ある場合があるようです。日本語なら、単数形1パターンのみなので、1とします。英語圏なら、単数形1パターンと複数形1パターンなので、合わせて2とします。plural入力された個数値から引数値を計算する式を書きます。nが実際に入ってくる個数で、上記例plural=(n!=1)ですと、「nが1じゃなければ正(1),それ以外は偽(0)」となります。plural=(n==1?0:1);のような三項演算子も使えるようです。"リンゴ達"このmsgstr[]の引数に対応している、という仕組みです。うまく計算式を利用すれば3個以上の場合分けなども書けそうですね。使わないと思いますが。以上、ご参考になりましたでしょうか。Manual未分類poファイル国際化PHPCakePHP関連エントリーChrome以外で真っ白になるXSERVERでcronするとPHP_SAPIがcgi-fcgiを返してきて困る件WordPressで意図的に特定のページを404エラーにしたい。特定商取引法に基づく表記よくある質問お問い合せプレミアム会員サイトマップカザオキラボページ先頭へ。