International PHP Conference 2019 - Spring Edition

MessageFormatter::setPattern

msgfmt_set_pattern

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

MessageFormatter::setPattern -- msgfmt_set_patternフォーマッタが使用するパターンを設定する

説明

オブジェクト指向型

public bool MessageFormatter::setPattern ( string $pattern )

手続き型

bool msgfmt_set_pattern ( MessageFormatter $fmt , string $pattern )

フォーマッタが使用するパターンを設定します。

パラメータ

fmt

メッセージのフォーマッタ。

pattern

このメッセージフォーマッタで使用するパターン文字列。 パターンには、'アポストロフィに優しい' 構文を使用します。 » umsg_autoQuoteApostrophe を通してから解釈が行われます。

返り値

成功した場合に 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(123456) ) . "\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(123456) ) . "\n";
?>

例2 オブジェクト指向の例

<?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(123456)) . "\n";

$fmt->setPattern("{0, number} trees hosting {1, number} monkeys" );
echo 
"New pattern: '" $fmt->getPattern() . "'\n";
echo 
"Formatted number: " $fmt->format(array(123456)) . "\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

参考

add a note add a note

User Contributed Notes 1 note

up
0
neil dot smith at vouchercloud dot com
4 years ago
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.
To Top