MessageFormatter sınıfı

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

Giriş

MessageFormatter (İleti Biçemleyici), dilden bağımsız iletiler üretmeyi ve birleştirmeyi mümkün kılan somut bir sınıftır. Bu sınıfın yöntemleri, son kullanıcılar tarafından görülecek iletileri derlemek için kullanılır.

MessageFormatter sınıfı, program tarafından sağlanan çeşitli (metin, sayı ve tarih gibi) veri parçaları sayesinde iletilerin montajını yapar. MessageFormatter'ın bir sınıf olmasından dolayı programın bu veri parçalarının sırasını bilmeye ihtiyacı yoktur. Sınıf bu veri parçaları için biçemleme belirtimlerini kullanarak iletiyi bir özkaynak paketi içinde tek bir dizge halinde monte eder. Örneğin, MessageFormatter "Finished printing x out of y files..." cümlesini çeviriye izin verecek esneklikte basmanıza yardımcı olacaktır.

Öncelikle, bir son kullanıcı iletisi bir cümle olarak oluşturulur ve bir dizge olarak elde edilir. Cümle yapısı, sözcük sırası, bayı biçemi ve daha bir çok şey dilden dile farklılıklar gösterdiğinden bu işlem yerelleştiriciler açısından sorunlara yol açar. İletileri dilden bağımsız bir yolla oluşturmak için iletinin parçaları her veri için bir anahtar sağlanarak ayrı ayrı yerlerde tutulur. MessageFormatter sınıfı bu anahtarları kullanarak ileti parçalarını birleştirebilir, bunları yerelleştirebilir ve son kullanıcıya iyi biçimlenmiş bir dizge olarak gösterebilir.

MessageFormatter, bir nesne kümesini alır, bunları biçemler ve bunları uygun yerlerde bir şablon içine yerleştirir. Seçim biçemleri, çoğul biçemlerin sayılarla eşleştirilip bir öğe dizisinden seçilebilmesini sağlar. Genelde, değiştirgeler ve özkaynaklar üzerinden gelen ileti biçemi çalışma anında devingen olarak değiştirgelere atanır.

Sınıf Sözdizimi

MessageFormatter {
/* Yöntemler */
__construct ( string $yerel , string $kalıp )
MessageFormatter create ( string $locale , string $pattern )
static string formatMessage ( string $yerel , string $kalıp , array $değiştirgeler )
string format ( array $değiştirgeler )
int getErrorCode ( void )
string getErrorMessage ( void )
string getLocale ( void )
string getPattern ( void )
static array parseMessage ( string $yerel , string $değer )
array parse ( string $değer )
bool setPattern ( string $kalıp )
}

İçindekiler

add a note add a note

User Contributed Notes 1 note

up
4
from dot php dot net at NOSPAM dot brainbox dot cz
3 years ago
MessageFormatter does not work with DateTime instances as parameters in PHP < 5.5. Instance will be converted to timestamp with value 0 (e.g. 1970-01-01) and following Notice will be raised: „Object of class DateTime could not be converted to int“. You have to manually convert the instance to timestamp in these old PHP versions.

<?php
$datetime
= new DateTime();
if (
PHP_VERSION_ID < 50500) { // PHP < 5.5 needs conversion to timestamp
  
MessageFormatter::formatMessage('en_US', 'Today is {0, date, full}.', array($datetime->getTimestamp()));
} else {
  
// current code
  
MessageFormatter::formatMessage('en_US', 'Today is {0, date, full}.', array($datetime));
}
?>
To Top