CakeFest 2024: The Official CakePHP Conference

MessageFormatter sınıfı

(No version information available, might only be in Git)

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ı, sayı 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, bağımsız değişkenler ve özkaynaklar üzerinden gelen ileti biçemi çalışma anında dinamik olarak bağımsız değişkenlere atanır.

Sınıf Sözdizimi

class MessageFormatter {
/* Yöntemler */
public __construct(string $yerel, string $kalıp)
public static create(string $locale, string $pattern): ?MessageFormatter
public static formatMessage(string $yerel, string $kalıp, array $bağımsız_değişkenler): string|false
public format(array $bağımsız_değişkenler): string|false
public getErrorCode(): int
public getLocale(): string
public static parseMessage(string $yerel, string $kalıp, string $ileti): array|false
public parse(string $dizge): array|false
public setPattern(string $kalıp): bool
}

İçindekiler

add a note

User Contributed Notes 1 note

up
3
from dot php dot net at NOSPAM dot brainbox dot cz
9 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