MessageFormatter::setPattern
msgfmt_set_pattern
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
MessageFormatter::setPattern -- msgfmt_set_pattern — フォーマッタが使用するパターンを設定する
説明
オブジェクト指向型
手続き型
フォーマッタが使用するパターンを設定します。
パラメータ
formatter
-
メッセージのフォーマッタ。
pattern
-
このメッセージフォーマッタで使用するパターン文字列。 パターンには、'アポストロフィに優しい' 構文を使用します。 詳細は » Quoting/Escaping を参照ください。
例
例1 msgfmt_set_pattern() の例
<?php
$fmt = msgfmt_create( "en_US", "{0, number} monkeys on {1, number} trees" );
echo "Default pattern: '" . msgfmt_get_pattern( $fmt ) . "'\n";
echo "Formatting result: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";
msgfmt_set_pattern( $fmt, "{0, number} trees hosting {1, number} monkeys" );
echo "New pattern: '" . msgfmt_get_pattern( $fmt ) . "'\n";
echo "Formatted number: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";
?>
例2 オブジェクト指向の例
<?php
$fmt = new MessageFormatter( "en_US", "{0, number} monkeys on {1, number} trees" );
echo "Default pattern: '" . $fmt->getPattern() . "'\n";
echo "Formatting result: " . $fmt->format(array(123, 456)) . "\n";
$fmt->setPattern("{0, number} trees hosting {1, number} monkeys" );
echo "New pattern: '" . $fmt->getPattern() . "'\n";
echo "Formatted number: " . $fmt->format(array(123, 456)) . "\n";
?>
上の例の出力は以下となります。
Default pattern: '{0,number} monkeys on {1,number} trees' Formatting result: 123 monkeys on 456 trees New pattern: '{0,number} trees hosting {1,number} monkeys' Formatted number: 123 trees hosting 456 monkeys
+add a note
User Contributed Notes 1 note
neil dot smith at vouchercloud dot com ¶
10 years ago
A correct example would be to transpose the placeholders in pattern 2.
This is typical where changing messages from one language to another changes the word order, to result in a sensible translation.
Let's imagine it's localised as Spanish or Russian instead of English.
So really you want to have pattern 2 provided by your human translator to read like this :
New pattern: '{1,number} trees hosting {0,number} monkeys'
Formatted number: 456 trees hosting 123 monkeys
That is - the order of arguments is always the same, but your translated message content has the placeholders transposed for non English languages.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google