文字

MessageFormatter::setPattern

msgfmt_set_pattern

(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)

MessageFormatter::setPattern -- msgfmt_set_patternSet the pattern used by the formatter

说明

面向对象风格

public bool MessageFormatter::setPattern ( string $pattern )

过程化风格

bool msgfmt_set_pattern ( MessageFormatter $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

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_get_pattern() - Get the pattern used by the formatter

用户评论:

[#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.

上一篇: 下一篇: