2

そのように、MessageFormater に渡される文字列で名前付き引数を使用したいと思います。

$fmt = new MessageFormatter("en_US", "My name id {my_name}");
$fmt->format(array('my_name' => 'John'));

このコードを実行すると、次のエラー メッセージが表示されます。

$fmt->getErrorMessage() returns

数値のフォーマットに失敗しました: U_ILLEGAL_ARGUMENT_ERROR

一方

$fmt = new MessageFormatter("en_US", "My name id {0}");
$fmt->format(array(0 => 'John'));

うまく機能します。

icu-project の Web サイトでは、ICU 3.8 以降で名前付き引数がサポートされていることが報告されており ( Seen here )、私は 4.2.1 を使用しています。

ユニコーンはどこ?PHP は MessageFormatter の名前付き引数をサポートしていませんか? 多分代替案はありますか?

4

2 に答える 2

1

これは、intl の将来の (今日の時点で) バージョンで修正されます。https://bugs.php.net/bug.php?id=61871を参照してください。

于 2012-06-27T14:20:56.343 に答える
0

はい、そうです。何を聞きたいの?

更新:OPが質問を編集した後

echo vsprintf('My name id %s', array('John'));

sprintf()を参照してください

もちろん、それはローカルベースのものではありません。

于 2012-02-22T19:08:23.920 に答える