2

配列ベースの私の現在の実装は、キーと値を辞書に格納します。例:

$arr = array(
    'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.',
);

このような文字列内に html を格納するのはおそらく悪い考えだと思いますが、gettext を使用している場合、.mo/.po ファイルで同様の文字列を格納するにはどうすればよいですか? 「貼り付け」「下の URL」「flickr」などの単語を別々に保存する必要がありますか?

4

2 に答える 2

4

次のようなものを保存する必要があります

"Paste a %1 URL below"

str_replace('%1', $link, $message); のような単純なものを使用して、すべての「変数」を置き換えます。

$link も翻訳可能

"<a href="http://flickr.com/">%1</a>"

それはやり過ぎかもしれませんが(flickrは言語間で翻訳しますか?)

この背後にある理論的根拠は、言語が異なれば文法構造も異なり、単語の順序が常に同じであるとは限らないということです。

アップデート:

@alex と @chelmertz がコメントで言及しているように、sprintfまさにこの目的のために構築された関数を使用してみてください。

于 2009-12-04T17:24:01.300 に答える