Die Übersetzung funktioniert nicht mit Breadcrumbs, die von XML hinzugefügt wurden

8

Ich erstelle eine benutzerdefinierte Seite.

Ich füge solche Semmelbrösel hinzu (und es funktioniert gut).

<brand_brand_index translate="label">
        <reference name="breadcrumbs">
            <action method="addCrumb">
                <crumbName>Home</crumbName>
                <crumbInfo>
                    <label>Home</label>
                    <title>Home</title>
                    <link>/</link>
                </crumbInfo>
            </action>
            <action method="addCrumb">
                <crumbName>All Brands</crumbName>
                <crumbInfo>
                    <label>All Brands</label>
                    <title>All Brands</title>
                </crumbInfo>
            </action>
        </reference>
        [[...]]
    </brand_brand_index>

Das Problem ist, dass das Etikett nicht im Frontend übersetzt wurde. Es zeigt Home / All Brandsanstelle der übersetzten Version.

Die Dinge, die ich sichergestellt habe:

  1. translate="label"Zum Handler hinzugefügt
  2. Cache geleert (tatsächlich habe ich das Caching deaktiviert)
  3. Die Übersetzungssyntax ist korrekt (ich habe Mage_Core.csv eingegeben)
  4. Label wird richtig durch PHP-Code übersetzt (zB: $helper->__('All Brands');

Helfen Sie mir bitte, es herauszufinden.

Vielen Dank.

Tran Dinh Khanh
quelle
1
Haben translate="label"Sie beim Hinzufügen auch angegeben module="brand_brand"(oder was auch immer es in Ihrem Fall sein sollte)?
pspahn
<crumbInfo translate="label" module="brand_brand">- Siehe: stackoverflow.com/questions/7550429/…
pspahn
Danke @pspahn, ich versuche es dir später zu sagen. Nur eine Minute. Vielen Dank.
Tran Dinh Khanh
In Ihrem Link heißt es in der Antwort, dass If the module attribute is not present, the core module is used.ich am Anfang einen Übersetzungsbegriff in Mage_Core.csv hinzufüge. Warum funktioniert das nicht? Ich füge nur den Modulnamen (und auch die Modulübersetzungsdatei) hinzu, aber es funktioniert immer noch nicht. Ich inspiziere weiter. Eine Minute.
Tran Dinh Khanh

Antworten:

14

Um eine Krume ohne Verwendung eines Hilfsprogramms zu übersetzen, können Sie das translateAttribut für Ihren actionKnoten mithilfe von crumbInfo.labelund verwenden crumbInfo.title.

Beispiel:

<reference name="breadcrumbs">
    <action method="addCrumb" translate="crumbInfo.label crumbInfo.title">
        <crumbName>home</crumbName>
        <crumbInfo>
            <label>Home</label>
            <title>Home</title>
            <link>/</link>
        </crumbInfo>
    </action>
    <action method="addCrumb" translate="crumbInfo.label crumbInfo.title">
        <crumbName>brands</crumbName>
        <crumbInfo>
            <label>All Brands</label>
            <title>All Brands</title>
        </crumbInfo>
    </action>
</reference>

Es ist der bessere Weg, Breadcrumbs zu übersetzen. Verwenden Sie Helfer nur, wenn Sie einen benutzerdefinierten Titel festgelegt haben, der von URL-Parametern oder etwas anderem abhängt.

Frédéric MARTINEZ
quelle
Vielen Dank, Frederic. Einfach, aber es funktioniert. Ich habe es in Magento 1.9.1.0 versucht
Andhi Irawan
@ PeterJaapBlaakmeer Danke! Ja, ich denke wirklich, meine Antwort sollte die akzeptierte Antwort sein. Es ist einfacher und Sie brauchen keinen weiteren Helfer.
Frédéric MARTINEZ
1
Ich habe Ihre Antwort als akzeptiert markiert, da ich es in vielen Fällen einfacher finde. Vielen Dank. Ihre Antwort kam ziemlich spät, als ich sie vor langer Zeit fertiggestellt habe. Deshalb wurde sie nicht akzeptiert.
Tran Dinh Khanh
3

Beachten Sie, dass Sie mithilfe der Hilfsklasse auch Links für Breadcrumbs generieren können.
Bei Verwendung der Hilfsklasse kann der obige XML-Block folgendermaßen aussehen:

<brand_brand_index translate="label">
    <reference name="breadcrumbs">
        <action method="addCrumb">
            <crumbName>Home</crumbName>
            <params helper="module/getHomeUrl" />
        </action>
        <action method="addCrumb">
            <crumbName>All Brands</crumbName>
            <params helper="module/getBrandUrl" />
        </action>
    </reference>
    [[...]]
</brand_brand_index>

Fügen Sie die getHomeUrl()& getBrandUrl()-Methoden in der Helper / Data.php Ihres Moduls wie folgt hinzu:

class Namespace_Module_Helper_Data extends Mage_Core_Helper_Abstract
{
    //...

    public function getHomeUrl()
    {
        return array(
            'label' => Mage::helper('module')->__('Home'),
            'title' => Mage::helper('module')->__('Home'),
            'link' => Mage::getUrl(),
        );
    }

    public function getBrandUrl()
    {
        return array(
            'label' => Mage::helper('module')->__('All Brands'),
            'title' => Mage::helper('module')->__('All Brands')
        );
    }
}
MagePsycho
quelle
Das funktioniert ziemlich gut, aber haben Sie eine Idee, warum die Übersetzung nicht funktioniert, wenn Sie <crumbInfo><label></label></crumbInfo>-way verwenden?
TimPietrusky
Habe meine Antwort unten gepostet, ich bin nicht in der Lage, die richtigen Brotkrumen in meinem benutzerdefinierten Modul zu bekommen
Sushivam
0

Ich versuche das gleiche wie unten:

in meiner XML-Datei:

<reference name="root">
        <action method="unsetChild"><alias>breadcrumbs</alias></action>
        <block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs">
            <action method="addCrumb">
                <crumbName>Home</crumbName>
                <params helper="recipe/getHomeUrl" />
                <!-- <crumbInfo>
                    <label>Home</label>
                    <title>Home</title>
                    <link>/</link>

                </crumbInfo> -->
            </action>
            <action method="addCrumb">
                <crumbName>Recipes</crumbName>
                <crumbInfo>
                    <label>Recipes</label>
                    <title>Recipe Home Page</title>
                    <link>/recipe</link>
                </crumbInfo>
            </action>
            <action method="addCrumb">
                <crumbName>Current Page</crumbName>
                <crumbInfo>
                    <label>Current Page</label>
                    <title>Current Page</title>
                </crumbInfo>
            </action>
        </block>
    </reference>

\ app \ code \ local \ Magenshop \ Recipe \ Helper \ Data.php

public function getHomeUrl()
{
    return array(
        'label' => Mage::helper('module')->__('Home'),
        'title' => Mage::helper('module')->__('Home'),
        'link' => Mage::getUrl(),
    );
}

Ich bekomme nur:

1) / Rezepte / Aktuelle Seite

2) Kein Homepage-Link ...

Sushivam
quelle
Stellen Sie sicher, dass Ihr Erweiterungsname "Rezept" und nicht "Magenshop / Rezept" lautet.
Tran Dinh Khanh