La traduzione non funziona con il pangrattato aggiunto da XML


8

Sto costruendo una pagina personalizzata.

Aggiungo il pangrattato in questo modo (e funziona bene).

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

Il problema è l'etichetta non tradotta in front-end. Mostra Home / All Brandsinvece della versione tradotta.

Le cose che mi sono assicurato:

  1. Aggiunto translate="label"al gestore
  2. Cache cancellata (in seguito ho disattivato la memorizzazione nella cache)
  3. La sintassi della traduzione è corretta (ho inserito Mage_Core.csv)
  4. L'etichetta è tradotta correttamente dal codice php (ad esempio: $helper->__('All Brands');

Aiutami a capirlo, per favore.

Grazie.


1
Quando translate="label"hai aggiunto hai incluso anche module="brand_brand"(o qualunque cosa dovrebbe essere nel tuo caso)?
— pspahn,

<crumbInfo translate="label" module="brand_brand">- See: stackoverflow.com/questions/7550429/...
— pspahn

Grazie @pspahn, provo a dirtelo più tardi. Solo un minuto. Grazie.
— Tran Dinh Khanh,

Nel tuo link, la risposta dice che If the module attribute is not present, the core module is used.ho aggiunto il termine di traduzione in Mage_Core.csv all'inizio, quindi perché non funziona ancora? Aggiungo solo il nome del modulo (e anche il file di traduzione del modulo) ma non funziona ancora. Continuo a ispezionare. Un minuto.
— Tran Dinh Khanh,

Risposte:


14

Per tradurre una briciola senza usare un aiuto, puoi usare l' translateattributo per il tuo actionnodo usando crumbInfo.labele crumbInfo.title.

Esempio:

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

È il modo migliore per tradurre il pangrattato, utilizzare gli helper solo se hai impostato un titolo personalizzato in base ai parametri URL o qualcos'altro.


Grazie Frederic. Semplice ma funziona. L'ho provato in Magento 1.9.1.0
— Andhi Irawan il

@PeterJaapBlaakmeer Grazie! Sì, penso davvero che la mia risposta dovrebbe essere la risposta accettata. È più facile e non hai bisogno di un altro aiuto.
— Frédéric MARTINEZ,

1
Ho contrassegnato la tua risposta come accettata perché trovo più facile farlo in molti casi. Grazie. La tua risposta è arrivata abbastanza tardi quando l'ho fatta molto tempo fa, ecco perché non è stata accettata.
— Tran Dinh Khanh,

3

Nota che puoi anche generare collegamenti per breadcrumb usando la classe helper.
Utilizzando la classe helper, sopra il blocco XML può apparire come:

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

E aggiungi i metodi getHomeUrl()& getBrandUrl()nel tuo Helper / Data.php del tuo modulo come:

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')
        );
    }
}

Funziona abbastanza bene, ma hai idea del perché la traduzione non funziona se usi la <crumbInfo><label></label></crumbInfo>strada?
— TimPietrusky,

Ho pubblicato la mia risposta qui sotto, non sono in grado di ottenere il pangrattato giusto nel mio modulo personalizzato
— Sushivam,

0

Sto provando lo stesso di seguito:

nel mio file 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 \ locale \ Magenshop \ Ricetta \ Helper \ Data.php

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

Sto ottenendo solo:

1) / Ricette / Pagina corrente

2) Nessun link alla Home page ...


Assicurati che il nome delle tue estensioni sia "ricetta", non "magenshop / ricetta".
— Tran Dinh Khanh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.