Zend_Translate-Plurals.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17110 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.translate.plurals">
  5. <title>Plurale Schreibweisen für Übersetzungen</title>
  6. <para>
  7. Ab Zend Framework 1.9 ist <classname>Zend_Translate</classname> in der Lage plurale
  8. Unterstützung anzubieten. Professionelle Übersetzung wird immer die Notwendigkeit haben
  9. Plurale zu verwenden da Sie in allen Sprachen gängig sind.
  10. </para>
  11. <para>
  12. Was sind also Plurale? Generell gesprochen sind Plurale Wörter die eine nummerische
  13. Bedeutung haben. Wie man aber vielleicht erkennen kann hat jede Sprache seine eigene
  14. Definition von Pluralen. Englisch zum Beispiel, unterstützt ein Plural. Wir haben eine
  15. Singular Definition, zum Beispiel "Car", was implizit ein Auto bedeutet. Und wir haben die
  16. plurale Definition "Cars" welche mehr als ein Auto aber auch null Autos bedeueten kann.
  17. Andere Sprachen wie russisch oder polnisch haben mehrere Plurale und auch die Regeln fpr
  18. die Plurale sind unterschiedlich.
  19. </para>
  20. <para>
  21. Wenn man Plurale mit <classname>Zend_Translate</classname> verwenden will muß man nicht
  22. wissen wie Plurale definiert werden. Nur der Übersetzer muß das wissen da er die
  23. Übersetzung durchführt. Die einzige Information die man haben muß ist die Sprache.
  24. </para>
  25. <para>
  26. Es gibt zwei Wege für die Verwendung von Pluralen... den traditionellen, der bedeutet das
  27. man eine eigene Methode verwendet, und einen modernen, der es erlaubt plurale Übersetzungen
  28. mit der gleichen Methode durchzuführen wie normale Übersetzungen.
  29. </para>
  30. <sect2 id="zend.translate.plurals.traditional">
  31. <title>Traditionelle plurale Übersetzung</title>
  32. <para>
  33. Personen die in der Vergangenheit mit Gettext gearbeitet haben werden mit
  34. traditionellen pluralen Übersetzungen besser zurechtkommen. Es gibt eine eigene
  35. Methode <methodname>plural()</methodname> die für plurale Übersetzungen verwendet
  36. werden kann.
  37. </para>
  38. <example id="zend.translate.plurals.traditional.example1">
  39. <title>Beispiel einer traditionellen pluralen Übersetzung</title>
  40. <para>
  41. Die Methode <methodname>plural()</methodname> akzeptiert 4 Parameter. Der erste
  42. Parameter ist die Singular messageId, der zweite ist die Plurale messageId und
  43. der dritte ist die Zahl oder Menge.
  44. </para>
  45. <para>
  46. Die Zahl wird verwendet um das Plural zu erkennen das zurückzugeben ist. Als
  47. optionaler vierter Parameter kann ein Gebietsschema angegeben werden das verwendet
  48. wird um die Übersetzung zurückzugeben.
  49. </para>
  50. <programlisting language="php"><![CDATA[
  51. $translate = new Zend_Translate('gettext', '/path/to/german.mo', 'de');
  52. $translate->plural('Car', 'Cars', $number);
  53. ]]></programlisting>
  54. </example>
  55. </sect2>
  56. <sect2 id="zend.translate.plurals.modern">
  57. <title>Moderne plurale Übersetzungen</title>
  58. <para>
  59. Da traditionelle plurale Übersetzungen aus Quellcode begrenzt ist der die englische
  60. Pluralform verwendet wurde ein neuer Weg für plurale Übersetzungen hinzugefügt.
  61. Er erlaubt es die gleiche <methodname>translate()</methodname> Methode für normale und
  62. plurale Übersetzungen zu verwenden.
  63. </para>
  64. <para>
  65. Um plurale Übersetzungen mit <methodname>translate()</methodname> zu verwenden muß man
  66. ein Array als messageId statt einem String angeben. Diese Array muß die originalen
  67. pluralen messageId's enthalten, dann die Anzahl und als letztes ein optionales
  68. Gebietsschema wenn die angegebenen messageId's nicht in englischer Schreibweise
  69. vorliegen.
  70. </para>
  71. <example id="zend.translate.plurals.modern.example1">
  72. <title>Beispiel für moderne plurale Übersetzungen</title>
  73. <para>
  74. Wenn wir die selben pluralen Definitionen übersetzen wollen wie vorher dann müsste
  75. unser Beispiel wie anbei gezeigt aussehen.
  76. </para>
  77. <programlisting language="php"><![CDATA[
  78. $translate = new Zend_Translate('gettext', '/path/to/german.mo', 'de');
  79. $translate->translate(array('Car', 'Cars', $number));
  80. ]]></programlisting>
  81. </example>
  82. <para>
  83. Bei der Verwendung von pluralen Übersetzungen ist es auch möglich jede Sprache als
  84. Quelle für messageId's zu verwenden.
  85. </para>
  86. <example id="zend.translate.plurals.modern.example2">
  87. <title>
  88. Beispiel einer modernen pluralen Übersetzung durch Verwendung einer anderen
  89. Quellsprachen
  90. </title>
  91. <para>
  92. Nehmen wir an wir wollen russisch verwenden und nehmen wir ausserdem an das die
  93. gegebenen messageId's russisch und nicht englisch sind.
  94. </para>
  95. <programlisting language="php"><![CDATA[
  96. $translate = new Zend_Translate('gettext', '/path/to/german.mo', 'de');
  97. $translate->translate(array('Car',
  98. 'Cars first plural',
  99. 'Cars second plural',
  100. $number,
  101. 'ru'));
  102. ]]></programlisting>
  103. </example>
  104. <para>
  105. Wie man sieht kann man mehr als ein englisches Plural angeben. Aber dann muß man die
  106. Quellsprache angeben damit <classname>Zend_Translate</classname> in diesem Fall weiß
  107. welche Plurale Regeln anzuwenden sind.
  108. </para>
  109. <para>
  110. Wenn man die plurale Sprache nicht angibt dan wird standardmäßig englisch verwendet
  111. und jede zusätzliche Plurale Definition wird ignoriert.
  112. </para>
  113. </sect2>
  114. <sect2 id="zend.translate.plurals.source">
  115. <title>Plurale Quelldateien</title>
  116. <para>
  117. Nicht alle Quellformate unterstützen plurale Formen. Sehen Sie für Details in diese
  118. Liste:
  119. </para>
  120. <table id="zend.translate.plurals.source.supportedadapters">
  121. <title>Unterstützung für Plural</title>
  122. <tgroup cols="4">
  123. <thead>
  124. <row>
  125. <entry>Adapter</entry>
  126. <entry>Plural unterstützt</entry>
  127. </row>
  128. </thead>
  129. <tbody>
  130. <row>
  131. <entry>Array</entry>
  132. <entry><emphasis>Ja</emphasis></entry>
  133. </row>
  134. <row>
  135. <entry>Csv</entry>
  136. <entry><emphasis>Ja</emphasis></entry>
  137. </row>
  138. <row>
  139. <entry>Gettext</entry>
  140. <entry><emphasis>Ja</emphasis></entry>
  141. </row>
  142. <row>
  143. <entry>Ini</entry>
  144. <entry><emphasis>Nein</emphasis></entry>
  145. </row>
  146. <row>
  147. <entry>Qt</entry>
  148. <entry><emphasis>Nein</emphasis></entry>
  149. </row>
  150. <row>
  151. <entry>Tbx</entry>
  152. <entry><emphasis>Nein</emphasis></entry>
  153. </row>
  154. <row>
  155. <entry>Tmx</entry>
  156. <entry><emphasis>Nein</emphasis></entry>
  157. </row>
  158. <row>
  159. <entry>Xliff</entry>
  160. <entry><emphasis>Nein</emphasis></entry>
  161. </row>
  162. <row>
  163. <entry>XmlTm</entry>
  164. <entry><emphasis>Nein</emphasis></entry>
  165. </row>
  166. </tbody>
  167. </tgroup>
  168. </table>
  169. <para>
  170. Anbei sind Beispiel für die Definition von pluralen Quelldateien zu finden.
  171. </para>
  172. <sect3 id="zend.translate.plurals.source.array">
  173. <title>Array Quellen mit pluralen Definitionen</title>
  174. <para>
  175. Ein Array mit pluralen Definitionen hat wie im folgenden Beispiel auszusehen.
  176. </para>
  177. <programlisting language="php"><![CDATA[
  178. array(
  179. 'plural_0' => array(
  180. 'plural_0 (ru)',
  181. 'plural_1 (ru)',
  182. 'plural_2 (ru)',
  183. 'plural_3 (ru)'
  184. ),
  185. 'plural_1' => ''
  186. );
  187. ]]></programlisting>
  188. <para>
  189. Im obigen Beispiel sind <code>plural_0</code> und <code>plural_1</code> die
  190. pluralen Definitionen vom Quellcode. Und beim Array <code>plural_0</code>
  191. hat alle übersetzten Pluralformen erhältlich. Sehen Sie auf das folgende
  192. Beispiel mit realem Inhalt und der Übersetzung von einer Englischen Quelle
  193. ins Deutsche.
  194. </para>
  195. <programlisting language="php"><![CDATA[
  196. array(
  197. 'Car' => array(
  198. 'Auto',
  199. 'Autos'
  200. ),
  201. 'Cars' => ''
  202. );
  203. ]]></programlisting>
  204. <para>
  205. Wenn die eigene Übersetzte Sprache mehr plurale Formen unterstützt müssen diese
  206. einfach an das Array der ersten pluralen Form hinzugefügt werden. Wenn die eigene
  207. Quellsprache mehr plurale Formen unterstützt, dann muß einfach eine neue leere
  208. Übersetzung hinzugefügt werden.
  209. </para>
  210. </sect3>
  211. <sect3 id="zend.translate.plurals.source.csv">
  212. <title>CSV Quellen mit pluralen Definitionen</title>
  213. <para>
  214. Eine CSV Datei mit pluralen Definitionen muß wie im folgenden Beispiel gezeigt
  215. aussehen.
  216. </para>
  217. <programlisting language="php"><![CDATA[
  218. "plural_0";"plural_0 (ru)";"plural_1 (ru)";"plural_2 (ru)";"plural_3 (ru)"
  219. "plural_1";
  220. ]]></programlisting>
  221. <para>
  222. Alle übersetzten Pluralen Formen müssen nach der ersten Pluralen der Quell Sprache
  223. hinzugefügt werden. Und alle weiteren Pluralen Formen der Quell Sprache müssen
  224. darunter aber ohne Übersetzung hinzugefügt werden. Es ist zu beachten das ein
  225. Trennzeichen bei den leeren Quell Plurals hinzugefügt werden muß.
  226. </para>
  227. </sect3>
  228. <sect3 id="zend.translate.plurals.source.gettext">
  229. <title>Gettext Quellen mit pluralen Definitionen</title>
  230. <para>
  231. Gettext Quellen unterstützen Plurale Formen von Haus aus. Es gibt keine
  232. Notwendigkeit Anpassungen durchzuführen da die <filename>*.mo</filename> Datei
  233. alle notwendigen Daten enthält.
  234. </para>
  235. <note>
  236. <para>
  237. Es ist zu beachten das Gettext die Verwendung von Quell-Sprachen, welche keine
  238. englischen Pluralformen verwenden, nicht unterstützt. Wenn man plant
  239. Quellsprachen zu verwenden welche andere Pluralformen unterstützt, wie zum
  240. Beispiel russisch, dann kann man Gettext nicht als Quelle verwenden.
  241. </para>
  242. </note>
  243. </sect3>
  244. </sect2>
  245. </sect1>
  246. <!--
  247. vim:se ts=4 sw=4 et:
  248. -->