PropertyText

Die PropertyText-Klasse erlaubt die Definition von Texten, die über einen Schlüssel referenzierbar sind.

Je nach Sprache gibt es unterschiedliche Mehrzahlregelungen für Hauptwörter und Einheiten (Stunde und Stunden). Einige Sprachen wie Englisch haben zwei Formen, andere Sprachen haben eine oder viele Regeln.

Die Pluralregeln werden in die folgendne Kategorien eingeteil:

  • zero
  • one (Einzahl)
  • two (Dual)
  • few (Paucal)
  • many
  • other

Die Kategorien sind in der \Alvine\I18n\Util\PluralRules-Klasse als Konstanten definiert.

$property=new \Alvine\Types\Properties();
$property->setValue('text', 'Es gibt {count} Autos');
$property->setValue('text.ONE', 'Es gibt {count} Auto');
$text=new \Alvine\I18n\PropertyText($property, 'text');

Ein Formatter erlaubt die Formierung des ausgwählten Textes.

// Lokale bestimmt die Mehrzahlregel
$locale=\Alvine\I18n\Locale::getInstance('de');

// Einen MessageFormatter definieren
$formatter=new \Alvine\I18N\MessageFormatter($locale);

In diesem Beispiel wird die Anzahl auf 0 gesetzt.

// Über die Map wird dann gesteuert, welcher
// Text als Vorlage genommen werden soll.
$mapZero=new \Alvine\Types\Map(['count'=>0]);
echo $formatter->format($text, $mapZero, 'count');
// Es gibt 0 Autos

In diesem Beispiel wird die Anzahl auf 1 gesetzt.

$mapOne=new \Alvine\Types\Map(['count'=>1]);
echo $formatter->format($text, $mapOne, 'count');
// ⇢ Es gibt 1 Auto

In diesem Beispiel wird die Anzahl auf 2 gesetzt.

$mapTwo=new \Alvine\Types\Map(['count'=>2]);
echo $formatter->format($text, $mapTwo, 'count');
// ⇢ Es gibt 2 Autos