16

この_n();関数の例(http://codex.wordpress.org/Function_Reference/_n)を参照してください。

sprintf( _n('%d comment.', '%d comments.', $number, 'text-domain'), $number );

英語で:

1 Comment
2 Comments

ポーランド語などの言語では、異なるパターンと複数形があります。

1 Komentarz
2 Komentarze
3 Komentarze
4 Komentarze
5 Komentarzy
6 Komentarzy
...
21 Komentarzy
22 Komentarze
23 Komentarze
24 Komentarze
25 Komentarzy
...
31 Komentarzy
32 Komentarze
...
91 Komentarzy
92 Komentarze
...
111 Komentarzy
112 Komentarzy (!)
...
121 Komentarzy
122 Komentarze

言語が複数形をサポートしている場合、翻訳者が独自のパターンを設定できるようにする方法を探しています。これを行うための創造的なPHPアプローチを思いつくことができますか?

私が考えることができるいくつかの解決策(しかし、それでも翻訳者はパターンを設定することができません):

if($number == 1){
    $message = __(‘1 Komentarz’ , ‘text-domain’);
}else if($number == 2){
    $message = __(‘2 Komentarze’ , ‘text-domain’);
}else if($number == 3){
    $message = __(‘3 Komentarze’ , ‘text-domain’);
}

編集:これはポーランド語のPOファイルで見つかりました:しかし、それをサポートする関数を"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"準備する方法がまだわかりません。_n();

4

2 に答える 2

18

まず、ロケールファイルに複数形の定義が必要です。あなたが質問に追加したように、ポーランドの場合、あなたは見るかもしれません

"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"

または(domain_name)-pl.poファイルの同様の定義。

次に、.poファイルの「%dComment」/「%dComments」の翻訳を準備する必要があります。例えば、

msgid "%d Comment"
msgid_plural "%d Comments"
msgstr[0] "%d Komentarz"
msgstr[1] "%d Komentarze"
msgstr[2] "%d Komentarzy"

.poファイルを.moファイルにコンパイルし、適切なフォルダーに配置してください。(例:languages /(domain_name)-pl.mo

あなたのWordpress(私が想定するプラグイン/テーマ)コードでは、あなたはそれをこのように呼ぶかもしれません、

for ($i=1;$i<15;$i++) {
  printf(_n("%d Comment", "%d Comments", $i, "(domain_name)"), $i);echo "<br />";
}
printf(_n("%d Comment", "%d Comments", 112, "(domain_name)"), 112);echo "<br />";

次に、もちろん、wp-config.phpでWordPressのロケールをポーランド語に設定します。

define ('WPLANG', 'pl');

正しい複数形の結果が表示されるはずです。

于 2012-08-26T03:10:28.240 に答える
0

やりたいことをやる方法を見つけたと思います。POEditアプリケーションでは、設定で指定できるパターンを使用して、複数の複数形を作成できます。

翻訳者は自分でパターンをコーディングする必要があります(私の質問のポーランド語のパターンを参照してください)。私はまだその主題を研究していますが、誰かが同様の質問をしているなら、それは始めるのに良い場所です:http ://www.poedit.net/trac/wiki/Doc/PluralForms

于 2012-08-25T12:21:26.167 に答える