Pregunta

Tengo page.xml predeterminado.

He añadido

<block type="core/text" name="for_everyone">
   <action method="setText" translate="text"><text>Some text!</text></action>
</block> 

a

<block type="core/text_list" name="content" as="content" translate="label">
    <label>Main Content Area</label>
</block>

y obtuve este:

<block type="core/text_list" name="content" as="content" translate="label">
    <label>Main Content Area</label>
    <block type="core/text" name="for_everyone">
        <action method="setText" translate="text"><title>Some text!</title></action>
    </block> 
</block>

Luego agregué dos archivos para mi tema:

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

"Some text!","Some text!"

y

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

"Some text!","un text!"

Pero cada vez que ejecuto cualquier idioma, veo "¡Algún texto!".Al mismo tiempo, el idioma seleccionado para el sitio web se usa correctamente.Por ejemplo, la cadena de catalog.xml se traduce perfectamente:

<block type="core/template" name="right.permanent.callout" template="callouts/right_col.phtml">
      <action method="setImgSrc"><src>images/media/col_right_callout.jpg</src></action>
      <action method="setImgAlt" translate="alt" module="catalog"><alt>Keep your eyes open for our special Back to School items and save A LOT!</alt></action>
</block>

También intenté usar algo así y otras etiquetas:

<action method="setText" translate="title"><text>Some text!</title></action>

¿Alguien sabe cuál es el problema?

¿Fue útil?

Solución

El atributo translate debe contener una lista de nombres de etiquetas delimitada en el espacio para traducir. Por ejemplo, si el argumento, uno está pasando a Mage_Core_Block_Text::setText(), está encapsulado en `Nodo, debería tener lo siguiente:

<action method="setText" translate="foo"><foo>Some text!</foo></action>

A menos que uno esté intentando pasar en una estructura de matriz a través de la disposición XML, los nombres de los nodos de argumento no importan.

También vale la pena señalar que si se establece el atributo module, esa cadena se pasará al método de la fábrica de la clase Helper (Mage::helper(): consulte la línea de tiempo a continuación). Para las instancias en las que se está viendo una traducción incorrecta, verifique que no haya entradas primas en la tabla de base de datos de GeneracDicETAGCODE, que solo se ingresará si se ha utilizado la traducción en línea.

Secuencia de llamada:

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

              es ::_translateLayoutNode() que procesa los atributos de traducción de las directivas _translateLayoutNode():

              if (isset($node['module'])) {
                  $args[$arg] = Mage::helper((string)$node['module'])->__($args[$arg]);
              }
              else {
                  $args[$arg] = Mage::helper('core')->__($args[$arg]);
              }
              

Otros consejos

Verifique el nombre de su carpeta locale (e final)

app/design/frontend/default/default/local/en_US/translate.csv
app/design/frontend/default/default/locale/en_US/translate.csv
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top