Plurale Schreibweisen für Übersetzungen
Ab Zend Framework 1.9 ist Zend_Translate in der Lage plurale
Unterstützung anzubieten. Professionelle Übersetzung wird immer die Notwendigkeit haben
Plurale zu verwenden da Sie in allen Sprachen gängig sind.
Was sind also Plurale? Generell gesprochen sind Plurale Wörter die eine nummerische
Bedeutung haben. Wie man aber vielleicht erkennen kann hat jede Sprache seine eigene
Definition von Pluralen. Englisch zum Beispiel, unterstützt ein Plural. Wir haben eine
Singular Definition, zum Beispiel "Car", was implizit ein Auto bedeutet. Und wir haben die
plurale Definition "Cars" welche mehr als ein Auto aber auch null Autos bedeueten kann.
Andere Sprachen wie russisch oder polnisch haben mehrere Plurale und auch die Regeln fpr
die Plurale sind unterschiedlich.
Wenn man Plurale mit Zend_Translate verwenden will muß man nicht
wissen wie Plurale definiert werden. Nur der Übersetzer muß das wissen da er die
Übersetzung durchführt. Die einzige Information die man haben muß ist die Sprache.
Es gibt zwei Wege für die Verwendung von Pluralen... den traditionellen, der bedeutet das
man eine eigene Methode verwendet, und einen modernen, der es erlaubt plurale Übersetzungen
mit der gleichen Methode durchzuführen wie normale Übersetzungen.
Traditionelle plurale Übersetzung
Personen die in der Vergangenheit mit Gettext gearbeitet haben werden mit
traditionellen pluralen Übersetzungen besser zurechtkommen. Es gibt eine eigene
Methode plural() die für plurale Übersetzungen verwendet
werden kann.
Beispiel einer traditionellen pluralen Übersetzung
Die Methode plural() akzeptiert 4 Parameter. Der erste
Parameter ist die Singular messageId, der zweite ist die Plurale messageId und
der dritte ist die Zahl oder Menge.
Die Zahl wird verwendet um das Plural zu erkennen das zurückzugeben ist. Als
optionaler vierter Parameter kann ein Gebietsschema angegeben werden das verwendet
wird um die Übersetzung zurückzugeben.
plural('Car', 'Cars', $number);
]]>
Moderne plurale Übersetzungen
Da traditionelle plurale Übersetzungen aus Quellcode begrenzt ist der die englische
Pluralform verwendet wurde ein neuer Weg für plurale Übersetzungen hinzugefügt.
Er erlaubt es die gleiche translate() Methode für normale und
plurale Übersetzungen zu verwenden.
Um plurale Übersetzungen mit translate() zu verwenden muß man
ein Array als messageId statt einem String angeben. Diese Array muß die originalen
pluralen messageId's enthalten, dann die Anzahl und als letztes ein optionales
Gebietsschema wenn die angegebenen messageId's nicht in englischer Schreibweise
vorliegen.
Beispiel für moderne plurale Übersetzungen
Wenn wir die selben pluralen Definitionen übersetzen wollen wie vorher dann müsste
unser Beispiel wie anbei gezeigt aussehen.
translate(array('Car', 'Cars', $number));
]]>
Bei der Verwendung von pluralen Übersetzungen ist es auch möglich jede Sprache als
Quelle für messageId's zu verwenden.
Beispiel einer modernen pluralen Übersetzung durch Verwendung einer anderen
Quellsprachen
Nehmen wir an wir wollen russisch verwenden und nehmen wir ausserdem an das die
gegebenen messageId's russisch und nicht englisch sind.
translate(array('Car',
'Cars first plural',
'Cars second plural',
$number,
'ru'));
]]>
Wie man sieht kann man mehr als ein englisches Plural angeben. Aber dann muß man die
Quellsprache angeben damit Zend_Translate in diesem Fall weiß
welche Plurale Regeln anzuwenden sind.
Wenn man die plurale Sprache nicht angibt dan wird standardmäßig englisch verwendet
und jede zusätzliche Plurale Definition wird ignoriert.
Plurale Quelldateien
Nicht alle Quellformate unterstützen plurale Formen. Sehen Sie für Details in diese
Liste:
Unterstützung für Plural
Adapter
Plural unterstützt
Array
Ja
Csv
Ja
Gettext
Ja
Ini
Nein
Qt
Nein
Tbx
Nein
Tmx
Nein
Xliff
Nein
XmlTm
Nein
Anbei sind Beispiel für die Definition von pluralen Quelldateien zu finden.
Array Quellen mit pluralen Definitionen
Ein Array mit pluralen Definitionen hat wie im folgenden Beispiel auszusehen.
array(
'plural_0 (ru)',
'plural_1 (ru)',
'plural_2 (ru)',
'plural_3 (ru)'
),
'plural_1' => ''
);
]]>
Im obigen Beispiel sind plural_0 und plural_1 die
pluralen Definitionen vom Quellcode. Und beim Array plural_0
hat alle übersetzten Pluralformen erhältlich. Sehen Sie auf das folgende
Beispiel mit realem Inhalt und der Übersetzung von einer Englischen Quelle
ins Deutsche.
array(
'Auto',
'Autos'
),
'Cars' => ''
);
]]>
Wenn die eigene Übersetzte Sprache mehr plurale Formen unterstützt müssen diese
einfach an das Array der ersten pluralen Form hinzugefügt werden. Wenn die eigene
Quellsprache mehr plurale Formen unterstützt, dann muß einfach eine neue leere
Übersetzung hinzugefügt werden.
CSV Quellen mit pluralen Definitionen
Eine CSV Datei mit pluralen Definitionen muß wie im folgenden Beispiel gezeigt
aussehen.
Alle übersetzten Pluralen Formen müssen nach der ersten Pluralen der Quell Sprache
hinzugefügt werden. Und alle weiteren Pluralen Formen der Quell Sprache müssen
darunter aber ohne Übersetzung hinzugefügt werden. Es ist zu beachten das ein
Trennzeichen bei den leeren Quell Plurals hinzugefügt werden muß.
Gettext Quellen mit pluralen Definitionen
Gettext Quellen unterstützen Plurale Formen von Haus aus. Es gibt keine
Notwendigkeit Anpassungen durchzuführen da die *.mo Datei
alle notwendigen Daten enthält.
Es ist zu beachten das Gettext die Verwendung von Quell-Sprachen, welche keine
englischen Pluralformen verwenden, nicht unterstützt. Wenn man plant
Quellsprachen zu verwenden welche andere Pluralformen unterstützt, wie zum
Beispiel russisch, dann kann man Gettext nicht als Quelle verwenden.