そのように、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 の名前付き引数をサポートしていませんか? 多分代替案はありますか?