| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 17110 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.translate.plurals">
- <title>Plurale Schreibweisen für Übersetzungen</title>
- <para>
- Ab Zend Framework 1.9 ist <classname>Zend_Translate</classname> 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.
- </para>
- <para>
- 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.
- </para>
- <para>
- Wenn man Plurale mit <classname>Zend_Translate</classname> 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.
- </para>
- <para>
- 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.
- </para>
- <sect2 id="zend.translate.plurals.traditional">
- <title>Traditionelle plurale Übersetzung</title>
- <para>
- Personen die in der Vergangenheit mit Gettext gearbeitet haben werden mit
- traditionellen pluralen Übersetzungen besser zurechtkommen. Es gibt eine eigene
- Methode <methodname>plural()</methodname> die für plurale Übersetzungen verwendet
- werden kann.
- </para>
- <example id="zend.translate.plurals.traditional.example1">
- <title>Beispiel einer traditionellen pluralen Übersetzung</title>
- <para>
- Die Methode <methodname>plural()</methodname> akzeptiert 4 Parameter. Der erste
- Parameter ist die Singular messageId, der zweite ist die Plurale messageId und
- der dritte ist die Zahl oder Menge.
- </para>
- <para>
- 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.
- </para>
- <programlisting language="php"><![CDATA[
- $translate = new Zend_Translate('gettext', '/path/to/german.mo', 'de');
- $translate->plural('Car', 'Cars', $number);
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.translate.plurals.modern">
- <title>Moderne plurale Übersetzungen</title>
- <para>
- 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 <methodname>translate()</methodname> Methode für normale und
- plurale Übersetzungen zu verwenden.
- </para>
- <para>
- Um plurale Übersetzungen mit <methodname>translate()</methodname> 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.
- </para>
- <example id="zend.translate.plurals.modern.example1">
- <title>Beispiel für moderne plurale Übersetzungen</title>
- <para>
- Wenn wir die selben pluralen Definitionen übersetzen wollen wie vorher dann müsste
- unser Beispiel wie anbei gezeigt aussehen.
- </para>
- <programlisting language="php"><![CDATA[
- $translate = new Zend_Translate('gettext', '/path/to/german.mo', 'de');
- $translate->translate(array('Car', 'Cars', $number));
- ]]></programlisting>
- </example>
- <para>
- Bei der Verwendung von pluralen Übersetzungen ist es auch möglich jede Sprache als
- Quelle für messageId's zu verwenden.
- </para>
- <example id="zend.translate.plurals.modern.example2">
- <title>
- Beispiel einer modernen pluralen Übersetzung durch Verwendung einer anderen
- Quellsprachen
- </title>
- <para>
- Nehmen wir an wir wollen russisch verwenden und nehmen wir ausserdem an das die
- gegebenen messageId's russisch und nicht englisch sind.
- </para>
- <programlisting language="php"><![CDATA[
- $translate = new Zend_Translate('gettext', '/path/to/german.mo', 'de');
- $translate->translate(array('Car',
- 'Cars first plural',
- 'Cars second plural',
- $number,
- 'ru'));
- ]]></programlisting>
- </example>
- <para>
- Wie man sieht kann man mehr als ein englisches Plural angeben. Aber dann muß man die
- Quellsprache angeben damit <classname>Zend_Translate</classname> in diesem Fall weiß
- welche Plurale Regeln anzuwenden sind.
- </para>
- <para>
- Wenn man die plurale Sprache nicht angibt dan wird standardmäßig englisch verwendet
- und jede zusätzliche Plurale Definition wird ignoriert.
- </para>
- </sect2>
- <sect2 id="zend.translate.plurals.source">
- <title>Plurale Quelldateien</title>
- <para>
- Nicht alle Quellformate unterstützen plurale Formen. Sehen Sie für Details in diese
- Liste:
- </para>
- <table id="zend.translate.plurals.source.supportedadapters">
- <title>Unterstützung für Plural</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Adapter</entry>
- <entry>Plural unterstützt</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Array</entry>
- <entry><emphasis>Ja</emphasis></entry>
- </row>
- <row>
- <entry>Csv</entry>
- <entry><emphasis>Ja</emphasis></entry>
- </row>
- <row>
- <entry>Gettext</entry>
- <entry><emphasis>Ja</emphasis></entry>
- </row>
- <row>
- <entry>Ini</entry>
- <entry><emphasis>Nein</emphasis></entry>
- </row>
- <row>
- <entry>Qt</entry>
- <entry><emphasis>Nein</emphasis></entry>
- </row>
- <row>
- <entry>Tbx</entry>
- <entry><emphasis>Nein</emphasis></entry>
- </row>
- <row>
- <entry>Tmx</entry>
- <entry><emphasis>Nein</emphasis></entry>
- </row>
- <row>
- <entry>Xliff</entry>
- <entry><emphasis>Nein</emphasis></entry>
- </row>
- <row>
- <entry>XmlTm</entry>
- <entry><emphasis>Nein</emphasis></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>
- Anbei sind Beispiel für die Definition von pluralen Quelldateien zu finden.
- </para>
- <sect3 id="zend.translate.plurals.source.array">
- <title>Array Quellen mit pluralen Definitionen</title>
- <para>
- Ein Array mit pluralen Definitionen hat wie im folgenden Beispiel auszusehen.
- </para>
- <programlisting language="php"><![CDATA[
- array(
- 'plural_0' => array(
- 'plural_0 (ru)',
- 'plural_1 (ru)',
- 'plural_2 (ru)',
- 'plural_3 (ru)'
- ),
- 'plural_1' => ''
- );
- ]]></programlisting>
- <para>
- Im obigen Beispiel sind <code>plural_0</code> und <code>plural_1</code> die
- pluralen Definitionen vom Quellcode. Und beim Array <code>plural_0</code>
- hat alle übersetzten Pluralformen erhältlich. Sehen Sie auf das folgende
- Beispiel mit realem Inhalt und der Übersetzung von einer Englischen Quelle
- ins Deutsche.
- </para>
- <programlisting language="php"><![CDATA[
- array(
- 'Car' => array(
- 'Auto',
- 'Autos'
- ),
- 'Cars' => ''
- );
- ]]></programlisting>
- <para>
- 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.
- </para>
- </sect3>
- <sect3 id="zend.translate.plurals.source.csv">
- <title>CSV Quellen mit pluralen Definitionen</title>
- <para>
- Eine CSV Datei mit pluralen Definitionen muß wie im folgenden Beispiel gezeigt
- aussehen.
- </para>
- <programlisting language="php"><![CDATA[
- "plural_0";"plural_0 (ru)";"plural_1 (ru)";"plural_2 (ru)";"plural_3 (ru)"
- "plural_1";
- ]]></programlisting>
- <para>
- 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ß.
- </para>
- </sect3>
- <sect3 id="zend.translate.plurals.source.gettext">
- <title>Gettext Quellen mit pluralen Definitionen</title>
- <para>
- Gettext Quellen unterstützen Plurale Formen von Haus aus. Es gibt keine
- Notwendigkeit Anpassungen durchzuführen da die <filename>*.mo</filename> Datei
- alle notwendigen Daten enthält.
- </para>
- <note>
- <para>
- 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.
- </para>
- </note>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|