MessageFormatter::setPattern

msgfmt_set_pattern

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

MessageFormatter::setPattern -- msgfmt_set_pattern设置格式化程序使用的模式

描述

面向对象风格

public MessageFormatter::setPattern(string $pattern): bool

过程式风格

msgfmt_set_pattern(MessageFormatter $formatter, string $pattern): bool

设置格式化程序使用的模式

参数

formatter

消息格式化程序

pattern

要在此消息格式化程序中使用的模式 string。该模式使用“单引号友好的”语法;有关详细信息,请参见 » 引用/转义

返回值

成功时返回 true,失败时返回 false

示例

示例 #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 OO 示例

<?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 个注释

0
neil dot smith at vouchercloud dot com
10 年前
一个正确的例子是在模式 2 中转置占位符。

这在将消息从一种语言更改为另一种语言时改变了词序以产生合理的翻译时很典型。

让我们假设它被本地化为西班牙语或俄语而不是英语。
因此,你真正想要的是你的翻译人员提供的模式 2,它看起来像这样

新的模式:'{1,number} trees hosting {0,number} monkeys'
格式化的数字:456 trees hosting 123 monkeys

也就是说,参数的顺序始终相同,但你翻译的消息内容在非英语语言中转置了占位符。
To Top