Перевод не работает на хлебные крошки, добавленные XML

8

Я создаю пользовательскую страницу.

Я добавляю крошки, как это (и это работает хорошо).

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

Проблема заключается в том, что ярлык не переведен во внешний интерфейс. Показывает Home / All Brandsвместо переведенной версии.

Вещи, которые я убедился:

  1. Добавлено translate="label"в обработчик
  2. Кеш очищен (фактически я отключил кеширование)
  3. Синтаксис перевода правильный (я поместил в Mage_Core.csv)
  4. Метка переведена правильно с помощью php-кода (например: $helper->__('All Brands');

Помогите мне разобраться, пожалуйста.

Спасибо.

Чан Динь Кхань
источник
1
При добавлении translate="label"вы также включали module="brand_brand"(или как это должно быть в вашем случае)?
pspahn
<crumbInfo translate="label" module="brand_brand">- См .: stackoverflow.com/questions/7550429/…
pspahn
Спасибо @pspahn, я постараюсь рассказать вам позже. Минуточку. Спасибо.
Чан Динь Кхан
В вашей ссылке ответ говорит, что If the module attribute is not present, the core module is used.я добавляю термин перевода в Mage_Core.csv в начале, так почему же он по-прежнему не работает? Я просто добавляю имя модуля (и файл перевода модуля), но он все равно не работает. Я продолжаю проверять. Минута.
Чан Динь Кхан

Ответы:

14

Чтобы перевести крошку без помощи помощника, вы можете использовать translateатрибут для вашего actionузла с помощью crumbInfo.labelи 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>

Это лучший способ перевести хлебные крошки, использовать помощников, только если у вас установлен собственный заголовок, зависящий от параметров URL-адреса или чего-то еще.

Фредерик Мартинес
источник
Спасибо, Фредерик. Просто, но это работает. Я пробовал это в Magento 1.9.1.0
Andhi Irawan
@PeterJaapBlaakmeer Спасибо! Да, я действительно думаю, что мой ответ должен быть принятым ответом. Это проще, и вам не нужен другой помощник.
Фредерик МАРТИНЕС
1
Я пометил ваш ответ как принятый, потому что во многих случаях мне легче это сделать. Спасибо. Ваш ответ пришел довольно поздно, когда я сделал это давным-давно, поэтому он не был принят.
Чан Динь Кхан
3

Обратите внимание, что вы также можете создавать ссылки для хлебных крошек, используя вспомогательный класс.
Используя вспомогательный класс, приведенный выше блок XML может выглядеть так:

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

И добавьте методы getHomeUrl()& getBrandUrl()в ваш модуль Helper / Data.php как:

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
источник
Это работает довольно хорошо, но есть ли у вас идеи, почему перевод не работает, если вы используете <crumbInfo><label></label></crumbInfo>-way?
ТимПетрусский
Разместил мой ответ ниже, я не могу получить правильные хлебные крошки в моем пользовательском модуле
Сушивам
0

Я пытаюсь так же, как показано ниже:

в моем 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>

\ Приложение \ код \ Local \ Magenshop \ Рецепт \ Helper \ Data.php

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

Я получаю только:

1) / Рецепты / Текущая страница

2) Нет ссылки на главную страницу ...

Sushivam
источник
Убедитесь, что ваше расширение называется «Рецепт», а не «Magenshop / Рецепт».
Чан Динь Кхан