Zend_Translate-Introduction.xml 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.translate.introduction">
  5. <title>Einführung</title>
  6. <para>
  7. <classname>Zend_Translate</classname> ist die Lösung des Framework's für mehrsprachige Applikationen.
  8. </para>
  9. <para>
  10. In mehrsprachigen Applikationen muß der Inhalt in verschiedene Sprachen übersetzt,
  11. und der Inhalt angezeigt werden, abhängig von der Sprache des Benutzers.
  12. PHP bietet bereits mehrere Wege um solche Probleme zu behandeln, trotzdem zeigt die
  13. Verwendung von PHP einige Probleme:
  14. </para>
  15. <itemizedlist>
  16. <listitem>
  17. <para>
  18. <emphasis role="strong">Unzureichende API:</emphasis>
  19. Es gibt keine API die für die verschiedenen Quellen identisch ist.
  20. Die Benutzung von Gettext zum Beispiel ist sehr kompliziert.
  21. </para>
  22. </listitem>
  23. <listitem>
  24. <para>
  25. <emphasis role="strong">PHP unterstützt nur Gettext und Arrays:</emphasis>
  26. PHP selbst bietet nur Unterstützung von Arrays oder Gettext.
  27. Alle anderen Quellen müssten händisch programmiert werden, weil es keinen
  28. eingebauten Support hierfür gibt.
  29. </para>
  30. </listitem>
  31. <listitem>
  32. <para>
  33. <emphasis role="strong">Keine Erkennung der Standard Sprache:</emphasis>
  34. Die Standard Sprache eines Benutzers kann nicht ohne tiefere Kenntnisse
  35. über die Hintergründe der Web Browser erkannt und benutzt werden.
  36. </para>
  37. </listitem>
  38. <listitem>
  39. <para>
  40. <emphasis role="strong">Gettext ist nicht Threadsicher:</emphasis>
  41. PHP's Gettext Bibliothek ist nicht Threadsicher und sollte nicht in
  42. Multithreaded Umgebungen verwendet werden. Das ist ein Problem der
  43. verwendeten Gettext Bibliothek und nicht von PHP selbst. Aber es ist
  44. ein bekanntes und noch immer vorhandenes Problem.
  45. </para>
  46. </listitem>
  47. </itemizedlist>
  48. <para>
  49. <classname>Zend_Translate</classname> hat keines der oben angesprochene Probleme. Deswegen wird
  50. empfohlen <classname>Zend_Translate</classname> statt der PHP eigenen Funktionen zu verwenden.
  51. Die Vorteile von <classname>Zend_Translate</classname> sind unter anderem:
  52. </para>
  53. <itemizedlist>
  54. <listitem>
  55. <para>
  56. <emphasis role="strong">Unterstützt mehrere Quell Formate:</emphasis>
  57. <classname>Zend_Translate</classname> unterstützt verschiedene Quell Formate, natürlich auch
  58. die welche von PHP unterstützt werden und andere Formate wie zum
  59. Beispiel TMX und CSV Quellen.
  60. </para>
  61. </listitem>
  62. <listitem>
  63. <para>
  64. <emphasis role="strong">Threadsicheres Gettext:</emphasis>
  65. Der Gettext Reader von <classname>Zend_Translate</classname> ist Threadsicher. Er kann ohne
  66. Probleme in Multithreaded Umgebungen verwendet werden.
  67. </para>
  68. </listitem>
  69. <listitem>
  70. <para>
  71. <emphasis role="strong">Einfache und einheitliche API:</emphasis>
  72. Die API von <classname>Zend_Translate</classname> ist sehr einfach und benötigt nur eine
  73. handvoll von Funktionen. So ist sie einfach zu lernen und einfach
  74. zu warten. Alle Quell Formate werden auf die gleiche Art und Weise
  75. gehandhabt, sodas wenn zum Beispiel der Wechsel des Quell Formats
  76. von Gettext zu TMX notwendig wird, nur eine einzelne Zeile im Code
  77. zu Ändern ist um den anderen Adapter zu spezifizieren.
  78. </para>
  79. </listitem>
  80. <listitem>
  81. <para>
  82. <emphasis role="strong">Erkennung der Standard Sprache des Benutzers:</emphasis>
  83. Die bevorzugte Sprache des Benutzers der auf die Site zugreift kann durch
  84. <classname>Zend_Translate</classname> erkannt und automatisch verwendet werden.
  85. </para>
  86. </listitem>
  87. <listitem>
  88. <para>
  89. <emphasis role="strong">Automatische Erkennung der Quelle:</emphasis>
  90. <classname>Zend_Translate</classname> kann mehrere Quelldateien erkennen und integrieren und zusätzlich das
  91. zu verwendende Gebietsschema erkennen abhängig vom Verzeichnis oder Dateinamen.
  92. </para>
  93. </listitem>
  94. </itemizedlist>
  95. <sect2 id="zend.translate.introduction.adapters">
  96. <title>Beginnen wir mit der Mehrsprachigkeit</title>
  97. <para>
  98. Beginnen wir mit dem Mehrsprachigen Business. Was wir also prinzipiell
  99. machen ist die Übersetzung unseres Strings, den wir ausgeben wollen,
  100. sodas die View die korrekte Übersetzte Ausgabe produziert.
  101. Sonst müssten wir für jede Sprache eine eigene View schreiben, und
  102. das würde keiner machen wollen. Normalerweise sind mehrsprachige Sites
  103. sehr einfach in Ihrem Aufbau. Es sind hierbei nur 4 Schritte zu befolgen:
  104. </para>
  105. <orderedlist numeration='arabic'>
  106. <listitem>
  107. <para>
  108. Den Adapter auswählen der Benutzt werden soll;
  109. </para>
  110. </listitem>
  111. <listitem>
  112. <para>
  113. Die View erzeugen und <classname>Zend_Translate</classname> in den Code integrieren;
  114. </para>
  115. </listitem>
  116. <listitem>
  117. <para>
  118. Die Quell Datei vom Code erzeugen;
  119. </para>
  120. </listitem>
  121. <listitem>
  122. <para>
  123. Die Quell Datei in die gewünschten Sprachen übersetzen.
  124. </para>
  125. </listitem>
  126. </orderedlist>
  127. <para>
  128. Die folgenden Abschnitte leiten durch alle vier Abschnitte.
  129. Sie sollten sorgfältig studiert werden um eigene Mehrsprachige
  130. Web Applikationen erstellen zu können.
  131. </para>
  132. </sect2>
  133. </sect1>
  134. <!--
  135. vim:se ts=4 sw=4 et:
  136. -->