• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • MessageFormatter::setPattern()

    msgfmt_set_pattern

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

    Set the pattern used by the formatter

    说明

    面向对象风格
    publicMessageFormatter::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.