2
0

Zend_Translate-Introduction.xml 6.1 KB

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