PHP Conference Japan 2024

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(字串 $pattern): 布林值

程序式風格

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

設定格式器所使用的模式。

參數

formatter

訊息格式器。

pattern

要在這個訊息格式器中使用的模式字串。此模式使用「撇號友善」語法;詳情請參閱 » 引號/跳脫

傳回值

成功時傳回 true,失敗時傳回 false

範例

範例 #1 msgfmt_set_pattern() 範例

<?php
$fmt
= msgfmt_create( "en_US", "{0, number} monkeys on {1, number} trees" );
echo
"預設模式:'" . msgfmt_get_pattern( $fmt ) . "'\n";
echo
"格式化結果:" . msgfmt_format( $fmt, array(123, 456) ) . "\n";

msgfmt_set_pattern( $fmt, "{0, number} trees hosting {1, number} monkeys" );
echo
"新的模式:'" . msgfmt_get_pattern( $fmt ) . "'\n";
echo
"格式化的數字:" . msgfmt_format( $fmt, array(123, 456) ) . "\n";
?>

範例 #2 物件導向範例

<?php
$fmt
= new MessageFormatter( "en_US", "{0, number} monkeys on {1, number} trees" );
echo
"預設模式:'" . $fmt->getPattern() . "'\n";
echo
"格式化結果: " . $fmt->format(array(123, 456)) . "\n";

$fmt->setPattern("{0, number} trees hosting {1, number} monkeys" );
echo
"新的模式:'" . $fmt->getPattern() . "'\n";
echo
"格式化後的數字: " . $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
10 年前
一個正確的例子是在模式 2 中轉換佔位符。

這在將訊息從一種語言更改為另一種語言時很常見,會更改詞序以產生合理的翻譯。

讓我們想像它是西班牙語或俄語的本地化版本,而不是英語。
所以你真正想要的是由你的人工翻譯提供的模式 2,讀起來像這樣

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

也就是說 - 參數的順序始終相同,但是您翻譯的訊息內容的佔位符已針對非英語語言進行了轉換。
To Top