MessageFormatter::setPattern()
msgfmt_set_pattern
(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)
Set the pattern used by the formatter
说明
面向对象风格public MessageFormatter::setPattern(string $pattern): bool
过程化风格
msgfmt_set_pattern(MessageFormatter$fmt,string $pattern): bool
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
。
范例
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"; ?>
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
参见
- msgfmt_create() Constructs a new Message Formatter
- msgfmt_get_pattern() Get the pattern used by the formatter
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.