La traduction ne fonctionne pas sur le fil d'Ariane ajouté par xml

8

Je crée une page personnalisée.

J'ajoute du fil d'Ariane comme ça (et ça marche bien).

<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>

Le problème est que l'étiquette n'est pas traduite en frontal. Il montre Home / All Brandsau lieu de la version traduite.

Les choses dont je me suis assuré:

  1. Ajouté translate="label"au gestionnaire
  2. Cache effacé (en fait, j'ai désactivé la mise en cache)
  3. La syntaxe de traduction est correcte (je mets dans Mage_Core.csv)
  4. L'étiquette est traduite correctement par du code php (par exemple: $helper->__('All Brands');

Aidez-moi à comprendre, s'il vous plaît.

Je vous remercie.

Tran Dinh Khanh
la source
1
Lors de l'ajout translate="label", avez-vous également inclus module="brand_brand"(ou quoi que ce soit dans votre cas)?
pspahn
<crumbInfo translate="label" module="brand_brand">- Voir: stackoverflow.com/questions/7550429/…
pspahn
Merci @pspahn, j'essaye de te le dire plus tard. Juste une minute. Je vous remercie.
Tran Dinh Khanh
Dans votre lien, la réponse indique If the module attribute is not present, the core module is used.que j'ajoute le terme de traduction dans Mage_Core.csv au début, alors pourquoi ne fonctionne-t-il toujours pas? J'ajoute simplement le nom du module (et le fichier de traduction du module également) mais cela ne fonctionne toujours pas. Je continue d'inspecter. Une minute.
Tran Dinh Khanh

Réponses:

14

Pour traduire une miette sans l'aide d'un assistant, vous pouvez utiliser l' translateattribut de votre actionnœud en utilisant crumbInfo.labelet crumbInfo.title.

Exemple:

<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>

C'est le meilleur moyen de traduire le fil d'Ariane, n'utilisez les assistants que si vous avez défini un titre personnalisé dépendant des paramètres d'URL ou autre chose.

Frédéric MARTINEZ
la source
Merci Frédéric. Simple mais ça marche. Je l'ai essayé dans Magento 1.9.1.0
Andhi Irawan
@PeterJaapBlaakmeer Merci! Oui, je pense vraiment que ma réponse devrait être la réponse acceptée. C'est plus facile et vous n'avez pas besoin d'un autre assistant.
Frédéric MARTINEZ
1
J'ai marqué votre réponse comme acceptée car je trouve cela plus facile à faire dans de nombreux cas. Je vous remercie. Votre réponse est arrivée assez tard lorsque je l'ai fait il y a longtemps, c'est pourquoi elle n'a pas été acceptée.
Tran Dinh Khanh
3

Notez que vous pouvez également générer des liens pour le fil d'Ariane à l'aide de la classe d'assistance.
En utilisant la classe d'assistance, le bloc XML ci-dessus peut ressembler à:

<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>

Et ajoutez les méthodes getHomeUrl()& getBrandUrl()dans Helper / Data.php de votre module comme:

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
la source
Cela fonctionne assez bien, mais avez-vous une idée de la raison pour laquelle la traduction ne fonctionne pas si vous utilisez le <crumbInfo><label></label></crumbInfo>-way?
TimPietrusky
J'ai posté ma réponse ci-dessous, je n'arrive pas à obtenir le
fil d'
0

J'essaye la même chose que ci-dessous:

dans mon fichier xml:

<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(),
    );
}

Je reçois seulement:

1) / Recettes / Page actuelle

2) Pas de lien vers la page d'accueil ...

Sushivam
la source
Assurez-vous que le nom de votre extension est "recette", pas "magenshop / recette".
Tran Dinh Khanh