So binden Sie Binärdateien für Sprachportale ein

26. Feb 2010

Dieser Artikel beschreibt die Vorgehensweise zum Einbinden von Binärdateien (Bilder, PDF's, Word/Office-Dokumente, etc.) in einem Portal mit mehreren Sprachen.

Eine mehrsprachige Präsenz wird über Weblication® durch Anlegen der jeweiligen Sprachverzeichnisse realisiert. Dies führt das Beispielprojekt bereits anschaulich dar, indem die weiteren Sprachen einfach über das Werkzeug "Projekt kopieren" erstellt werden. Die Sprachverzeichnisse beziehen sich hinsichtlich des Layouts standardmässig auf einen globalen Ordner, in dem die Templates- und Layout-Dateien abliegen. Desweiteren verfügt ein Portal über ein globales Assets-Verzeichnis, das die Bilder und sonstigen Mediadateien enthält, auf die alle Sprachen zurückgreifen.

Um nun z.B. ein Bild in allen Sprachen auszugeben, dabei aber Titel, Alternativtext, Beschreibung, etc. in der jeweiligen Sprache zu halten, empfehlen wir folgende Vorgehensweise.

Pflegemaske für die Binärdateien anlegen, die Mehrsprachigkeit berücksichtigt

Legen Sie die Pflegemaske für Binärdateien unter dem gewünschten Namen an und definieren Sie darin die Felder für die zu pflegenden Sprachen. Im nachfolgenden Beispiel wurde hierzu die im Beispielprojekt vorhandene Pflegemaske standard.extension.php kopiert, als multilanguage.extension.php abgelegt und entsprechend erweitert.

Beispiel: multilanguage.extension.php innerhalb /IhrGlobalesProjekt/wGlobal/layout/templates/editmasks

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wsl="http://weblication.de/5.0/wsl" xmlns:wslEditorPre="http://weblication.de/5.0/wsl" xmlns:wd="http://weblication.de/5.0/wd" xmlns:php="http://php.net/xsl" version="1.0">
  <xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/>
  <!-- Systemparameter (nicht ändern!) -->

  <xsl:param name="wHostURL"/>
  <xsl:param name="wDocumentRoot"/>
  <xsl:param name="wDocumentPath"/>
  <xsl:param name="wDocumentDir"/>
  <xsl:param name="wIsInEditor"/>
  <xsl:param name="wUsertype"/>
  <xsl:param name="wIsLoggedIn"/>

  <!-- XSLT-Template zur Pflege von Metadaten von Binärdateien -->

  <xsl:template match="/wd:document">
    <html xml:lang="de" lang="de">
      <head>
        <title>wdExtension-Bearbeitungsmaske</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
      </head>
      <body id="wBody">
        <div class="wEditorExtensionSheet">  

          <div class="wEditorExtensionLabel">Titel</div>
          <div class="wEditorExtensionValue XL"><!-- web:text:start editor="input"--><xsl:value-of select="//wd:extension/wd:meta/wd:title/text()"/><!-- web:text:stop --></div>
          
          <div class="wEditorExtensionLabel">Titel (DE)</div>
          <div class="wEditorExtensionValue XL"><!-- web:text:start editor="input"--><xsl:value-of select="//wd:extension/wd:object/wd:data[@id = 'title_de']/text()"/><!-- web:text:stop --></div>
          
          <div class="wEditorExtensionLabel">Title (EN)</div>
          <div class="wEditorExtensionValue XL"><!-- web:text:start editor="input"--><xsl:value-of select="//wd:extension/wd:object/wd:data[@id = 'title_en']/text()"/><!-- web:text:stop --></div>  
          
          <div class="wEditorExtensionLabel">Beschreibung</div>
          <div class="wEditorExtensionValue XL"> <!-- web:text:start editor="textarea"--><xsl:value-of select="//wd:extension/wd:object/wd:data[@id = 'description_de']/text()"/><!-- web:text:stop --></div>
          
          <div class="wEditorExtensionLabel">Description (EN)</div>
          <div class="wEditorExtensionValue XL"> <!-- web:text:start editor="textarea"--><xsl:value-of select="//wd:extension/wd:object/wd:data[@id = 'description_en']/text()"/><!-- web:text:stop --></div>
  
        </div>
      </body>
    </html>   

  </xsl:template>
</xsl:stylesheet>

Standard-Dateieinstellungen für das globale Assets-Verzeichnis anlegen

Legen Sie für das globale Mediaverzeichnis (z.B. /wAssets) Standard-Dateieinstellungen an, die auf die im vorigen Beispiel definierte Pflegemaske zurückgreifen. Hierzu rufen Sie z.B. die Verzeichniseinstellungen für das Verzeichnis /wAssets/img auf und klicken im Register "Allgemein" auf die Schaltfläche "Eigene Standard-Dateieinstellungen für dieses Verzeichnis anlegen" (sofern vorhanden). Klicken Sie dann auf die erscheinende Schaltfläche "Standard-Dateieinstellungen bearbeiten".
Über das Register "Eigenschaften" und die Schaltfläche "Templates" wählen Sie dann in der Auswahlbox zu "Maske Metadaten" die zuvor definierte Pflegemaske aus (z.B. /IhrGlobalesProjekt/wGlobal/layout/templates/editmasks/multilanguage.extension.php).

Wenn Sie nun innerhalb des Assets-Bildverzeichnisses ein Bild einchecken, erhält dies als Dokumentenerweiterung die zuvor definierte Erweiterung.

Auslesen der sprachabhängigen Texte über z.B. eine Liste

Den Alternativtext bzw. Titel des globalen Bildes lesen Sie dann in z.B. einer Liste dynamisch aus. Das nachfolgende Beispiel demonstriert dies durch Einsatz der globalen Variable für das Sprachkürzel der aktuell aufgerufenen Präsenz.

Beispiel: Auszug aus der standard.wParams.php mit Definition der globalen Variable $wLanguageProject

...
<xsl:variable name="wLanguageProject"><xsl:value-of select="php:functionString('wProjectCur::getLanguage', $wProjectPath)" /></xsl:variable>
...

Beispiel: Auszug aus Listen-Zeilentemplate (z.B.: assets.wFilelist.php)

...
  <xsl:template match="/wFilelist">
    <div class="elementGallery">
      <!-- Schleife über alle Dateien -->
      <xsl:for-each select="files/file">
        <img style="margin:4px" src="{@path}" alt="{wd:extension/wd:object/wd:data[@id = concat('title_', $wLanguageProject)]/text()}" title="{wd:extension/wd:object/wd:data[@id = concat('title_', $wLanguageProject)]/text()}" />
      </xsl:for-each>
    </div>
  </xsl:template>
...

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG