Sprachabhängige Texte

Dieser Artikel beschreibt, wie sprachabhängige Texte in sprachneutralen Templates genutzt werden können.

Um bei mehrsprachigen Projekten den Entwicklungsaufwand gering zu halten, sollte man möglichst alle Templates und Skripte sprachneutral aufbauen. Es lässt sich jedoch nicht vermeiden, darin neben den Seiteninhalten auch Texte einzubinden. Dies ist z.B. bei Schaltflächen oder individuellen Anwendungen sowie bei Formularen notwendig.

Texte können Sie über die PHP-Framework Funktion wTexts::getText() an beliebiger Stelle in allen Templates nutzen. Diese Funktion kennt alle im Verzeichnis /PROJEKT/wGlobal/content/texts liegenden Textdateien und stellt diese über deren Schlüssel zur Verfügung.

Text über XSLT einbinden

<h3><xsl:value-of select="php:functionString('wTexts::getText', 'search_headline')" /></h3>

Text über XSLT in ein Attribut einbinden

<a href="/base/index.php" title="{php:functionString('wTexts::getText', 'goto_homepage')}"><img src="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/logo.gif" alt="Logo"/>

Text über PHP einbinden

<wsl:php>print wTexts::getText('search_term');</wsl:php>

Aufbau der Textdatei

<wTexts version="5.0">
  <text key="search_headline">Suche</text>
  <text key="goto_homepage">Zur Startseite</text>
  <text key="search_term">Suchbegriff</text>
</wTexts>
FAQs
Warum sollte man Templates und Skripte in mehrsprachigen Projekten sprachneutral aufbauen?
Damit der Entwicklungsaufwand gering bleibt. Sprachabhängige Inhalte sollten nach Möglichkeit nicht direkt in Templates/Skripte eingearbeitet werden, sondern über zentral verwaltete Texte gelöst werden.
Welche Texte müssen in sprachneutralen Templates trotzdem sprachabhängig eingebunden werden?
Trotz sprachneutralem Aufbau lassen sich Texte nicht vollständig vermeiden. Häufig werden neben Seiteninhalten zusätzliche Texte benötigt, z.B. für Schaltflächen, individuelle Anwendungen sowie für Formulare.
Wie kann man Texte in Templates abrufen?
Über die PHP-Framework-Funktion wTexts::getText() an beliebiger Stelle in allen Templates. Die Funktion kennt die Textdateien im Verzeichnis /PROJEKT/wGlobal/content/texts und stellt sie über ihre Schlüssel bereit.
Wie bindet man einen Text über XSLT in eine Vorlage ein?
Mit einem XSLT-Ausdruck, der wTexts::getText aufruft, z.B.: <pre><code class="codeBlock" style="color: #000000">xml &lt;h3&gt;&lt;xsl:value-of select="php:functionString('wTexts::getText', 'search_headline')" /&gt;&lt;/h3&gt; </code></pre>
Wie kann man einen Text über XSLT in ein Attribut einbinden?
Indem man den Aufruf von wTexts::getText innerhalb des Attribut-Values nutzt, z.B. für einen Link-Titel: <pre><code class="codeBlock" style="color: #000000">xml &lt;a href="/base/" title="{php:functionString('wTexts::getText', 'goto_homepage')}"&gt; </code></pre>
Wie bindet man einen Text über PHP direkt in ein Template ein?
Über wsl:php, z.B.: <pre><code class="codeBlock" style="color: #000000">xml &lt;wsl:php&gt;print wTexts::getText('search_term');&lt;/wsl:php&gt; </code></pre>
Wie ist der Aufbau einer Textdatei für wTexts beschrieben?
Die Textdatei nutzt eine XML-Struktur mit dem wTexts-Root-Element und Text-Einträgen über Schlüssel (key), z.B.: <pre><code class="codeBlock" style="color: #000000">xml &lt;wTexts version="5.0"&gt; &lt;text key="search_headline"&gt;Suche&lt;/text&gt; &lt;text key="goto_homepage"&gt;Zur Startseite&lt;/text&gt; &lt;text key="search_term"&gt;Suchbegriff&lt;/text&gt; &lt;/wTexts&gt; </code></pre>