©
本文档使用 PHP中文网手册 发布
(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
MessageFormatter::setPattern -- msgfmt_set_pattern — Set the pattern used by the formatter
面向对象风格
$pattern
)过程化风格
$fmt
, string $pattern
)Set the pattern used by the formatter
fmt
The message formatter
pattern
The pattern string to use in this message formatter. The pattern uses an 'apostrophe-friendly' syntax; it is run through » umsg_autoQuoteApostrophe before being interpreted.
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 msgfmt_set_pattern() example
<?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" ;
?>
Example #2 OO example
<?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
[#1] neil dot smith at vouchercloud dot com [2014-08-05 12:29:34]
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.