Version: Magento 1.5 & 1.5.1

Themen spezifische Übersetzungen werden in Magento üblicherweise in der Datei /app/design/frontend/***BASE ODER DEFAULT***/***DEIN TEMPLATE***/locale/de_DE/tanslate.csv hinterlegt. Dabei muss das Format „***STRING IN TEMPLATE***“,“***ÜBERSETZTER TEXT***“ eingehalten werden. Teilweise sind auch Variablen wie %s enthalten. Die sind am Prozent Zeichen zu erkennen.

Die translate.csv im Template Ordner erhält, beim generieren der Übersetzungen, eine niedrigere Priorität als die standard Übersetzungen. Das nimmt der Möglichkeit Übersetzungstexte mit dem Template zu liefern die bereits in der standard Übersetzungstexten enthalten sind.

Um das zu ändern kann quick and dirty die Datei app/code/core/Mage/Core/Model/Translate.php in Zeile 558 folgendermaßen editiert werden:

    /**
     * Return translated string from text.
     *
     * @param string $text
     * @param string $code
     * @return string
     */
    protected function _getTranslatedString($text, $code)
    {
    	$translated = '';
        if (array_key_exists($text, $this->getData())) {
            $translated = $this->_data[$text];
        }
        elseif (array_key_exists($code, $this->getData())) {
            $translated = $this->_data[$code];
        }
        else {
            $translated = $text;
        }
        return $translated;
    }

Am einfachsten ist es die Methode _getTranslatedString() komplett zu ersetzen. 😉

Eine schönere Möglichkeit ist es die Datei app/code/local/Mage/Core/Model/Translate.php zu erstellen, mit den Inhalten der originalen Datei app/code/core/Mage/Core/Model/Translate.php zu füllen und dabei die Methode _getTranslatedString() mit der oben abgebildeten Methode zu ersetzen.

Wer möchte kann hier den fertigen Magento 1.5.X Translate Bugfix heruntergeladen werden. Der Fix muss gemäß der im Archiv enthaltenen Ordnerstruktur in das Magento root Verzeichnis kopiert werden.

4 Kommentare »
 
  1. Trudy sagt:

    Articles like this are an eaxmlpe of quick, helpful answers.

  2. Fabian Blechschmidt [www] sagt:

    Thanks for this solution!
    The problem exists in version 1.4.1.1 too. :-/

  3. Fabian Blechschmidt [www] sagt:

    Ok, Korrektur…

    Das ist kein Bug.

    Man muss sich nur ein wenig mehr Arbeit machen, dann kommt man auch ohne Core-Hack aus:
    „Display number of items in cart“,“Anzahl der Artikel“ – – – wird überschrieben
    „Mage_Checkout::Display number of items in cart“,“Anzahl der Artikel“ – – – wird nicht überschrieben

    Und noch zwei schlaue Setze von Vinai Kopp:
    [13:19] Wenn der Helper oder Block rewritten wurde muss man da aber aufpassen!
    [13:20] Nur zur info: aus dem Grund ist es gut in überschriebenen Blocks in _construct ein $this->setModuleName(‚Mage_Catalog‘); zu machen (oder was auch immer das original Modul war)

  4. Loaden sagt:

    Dieses Beispiel hat einen ganz anderen Anwendungsfall oder sehe ich das falsch? Hierbei werden die Theme Übersetzungen nicht höher priorisiert als die standard Übersetzungen.