Magento: hoe actietag inhoud te vertalen?

Ik heb standaard page.xml.

Ik heb naaregevoegd


   Some text!
 

naar


    

en ik heb deze:


    
    
        <title>Some text!</title>
     

Vervolgens heb ik twee bestanden toegevoegd voor mijn thema:

app/design/frontend/default/default/locale/en_US/translate.csv

"Some text!","Some text!"

en

app/design/frontend/default/default/locale/fr_FR/translate.csv

"Some text!","un text!"

Maar elke keer als ik een taal spreek, zie ik "Sommige tekst!". Tegelijkertijd wordt de geselecteerde taal voor de website correct gebruikt. De string uit catalog.xml vertaalt bijvoorbeeld perfect:


      images/media/col_right_callout.jpg
      Keep your eyes open for our special Back naar School items ensave A LOT!

I also tried naar use smth like that enother tags:

Some text!</title>

Weet iemand wat het probleem is?

3

2 antwoord

Het kenmerk translate moet een door spaties gescheiden lijst bevatten met de te vertalen tagnamen. Als het argument dat wordt doorgegeven aan Mage_Core_Block_Text :: setText() is ingekapseld in `node, moet u bijvoorbeeld het volgende hebben:

Some text!

Tenzij men via lay-out-XML probeert een matrixstructuur door te geven, doen de namen van de argumentknooppunten er niet toe.

Ook vermeldenswaard is dat als men het attribuut module instelt, die string wordt doorgegeven aan de methode van de helperklasse in de fabriek ( Mage :: helper() - zie onderstaande tijdlijn). Controleer in gevallen waarin onjuiste vertalingen worden gezien of er geen hogere waarden zijn in de core_translate -databasetabel, die alleen zou worden ingevoerd als inline-vertaling is gebruikt.

Oproep volgorde:

  • Mage_Core_Controller_Varien_Action::loadLayout()
    • ::generateLayoutBlocks()
      • Mage_Core_Model_Layout::generateBlocks()
        • ::_generateBlocks()
          • ::_generateAction()
            • ::_translateLayoutNode()

It is _translateLayoutNode() which processes the translate attributes of the directives:

if (isset($node['module'])) {
    $args[$arg] = Mage::helper((string)$node['module'])->__($args[$arg]);
}
else {
    $args[$arg] = Mage::helper('core')->__($args[$arg]);
}
8
toegevoegd
Natuurlijk, bewerkingsreactie om opgemaakte tijdlijn toe te voegen.
toegevoegd de auteur benmarks, de bron
Geen concurrentie ... Alan is de man!
toegevoegd de auteur benmarks, de bron
voor geneste blokken gebruik dot zoals translate = "foo.bar" zal vertalen Some text!
toegevoegd de auteur Zefiryn, de bron
Jij en Alan, strijden altijd voor Magento Stack-punten!
toegevoegd de auteur Clint, de bron
Dankje! Kunt u een voorbeeld of link geven voor de methode van de klassenfabriek alstublieft. Ik bedoel hoe de module = "smth" werkt.
toegevoegd de auteur Anthony, de bron

Controleer de naam van uw map locale (volg e)

app/design/frontend/default/default/local/en_US/translate.csv
app/design/frontend/default/default/locale/en_US/translate.csv
2
toegevoegd
Sorry, ik snap het wanneer ik het hier heb ingetypt. Opgelost.
toegevoegd de auteur Anthony, de bron