On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Hola amigos.

    Estoy trabajando en hacer multilenguaje un sitio que estaba originalmente en ingles.
    He instalado el plugin babel, y tengo 2 diferentes contextos.

    Mi problema es que tengo templates en los que tengo pedazos de texto que deberian estar disponibles en ambos idiomas. Estos contienen snippets, chunks, templatevariables etc. y no se como se haría. Alguien sabe y puede orientarme.

    No se si la cosa biene por el lado de los lexicons, pero no quiero agregar una entrada para cada simple palabra, y si agrego el bloque no funciona como deseo, quiero decir, funciona, pero luego no puedo editar el lexicon.

    Ejemplo un bloque en la plantilla:
    <h1>[[*longtitle]]</h1>
            [[ProductContent]]
            <ul id="pageinfo">
            <li><strong>Stock:</strong> <span>[*Stock*]</span></li>
            <li><strong>Price:</strong> <span>[*longtitle*] available from <em class="price">[*Mamuni*]</em></span></li>
            <li><strong>List:</strong> <span class="off">Approximate [*SavingOnList*] saving on list price</span></li>
            <li><strong>Condition:</strong> <span>[*Condition*]</span></li>
            <li><strong>Warranty:</strong> <span>[*Warranty*]</span></li>
            <li class="cl"></li>
            </ul>
            <div id="help">
            <strong id="buy"><a href="/buy-old.html?product=[[*longtitle]]&productid=[[*id]]" class="enquire">Help Me Buy Used</a></strong>
            <strong id="buynew"><a href="/buy-new.html?product=[[*longtitle]]" class="enquire">Help Me Buy New</a></strong>
            </div>
               <h2>[[*longtitle]] </h2>
               <ul>
               <li>Phone: +0387 (0)4444 33333 </li>
               <li><a href="mailto:info@domain.com">Email info@domain.com</a></li>
               </ul>


    Muchas gracias por adelantado. Saludos.
      Thank you for Modx, and thank you for your help.
    • Esta respuesta quizas te llega un poco tarde pero a lo mejor si aun la necesitas aqui te va.

      Lo primero es entender exactamente como funciona el multilenguaje dentro de la estructura de modx (independiente del plugin babel). Esto es muy sencillo y hay dos formas de visualizarlo.

      1) A traves del manager dentro de System / Lexicon Management. Aqui puedes ver las frases para cada idioma que vienen ya integrada por defecto dentro de modx. Aqui puedes agregar, remover, modificar como necesites.

      2) Mi forma preferida es atraves del los archivos php directamente. Estos se encuentran dentro de: core/lexicon/. Esto seria para el website en general. Cada plugin, snippet o extra tiene su propio lexicon que se encuentra dentro de: core/components/nombredelplugin/lexicon/

      Dentro de estos lexicon folders vas a encontrar un folder para cada culturekey (es / en / cs / etc) Y dentro de cada uno distintos archivos php (mas que nada para diferenciar distintas secciones y no tener todas las traducciones mezcladas).

      Si abres cualquier de estos php, vas a encontrarte con las traducciones. Por ejemplo:

      $_lang['mail_err_address_ns'] = 'You must provide an email address to send to.';


      Cada idioma entonces tendra la variable:

      $_lang['mail_err_address_ns']


      Con sus respectivas traducciones.

      Luego, en donde necesites accesar una traduccion solo necesitas un tag especial. Esto esta en la documentacion: http://rtfm.modx.com/display/revolution20/Internationalization

      En esencia necesitas este codigo:

      [[%key? &topic=`topicname` &namespace=`namespace_name` &language=`en`]]


      El key es el nombre de la variable. Por ejemplo: mail_err_address_ns

      El topic, namespace y language son opcionales y solo los necesitas si ningun otro tag similar lo ha requerido anteriormente en la pagina. Por ejemplo, dentro de la estructura base de modx ya estan pre-cargados estas opciones. En ese sentido solo necesitarias:

      [[%mail_err_address_ns]]


      Entendiendo ya la estructura entonces te doy mis recomendaciones para tus websites.

      1) En lo personal yo trato de respetar la estructura original para no tener problemas en actualizaciones futuras. En este sentido trato de diferenciar lo que es una traduccion de un plugin o snippet de una traduccion general del contenido del website.

      2) Para el caso de una traduccion general del website, yo creo un nuevo archivo dentro de: core/lexicons.

      Por ejemplo:

      core/lexicons/es/others.inc

      Y dentro de este archvio creo mis propias traducciones:

      $_lang['others_previous'] = 'Anterior';
      $_lang['others_next'] = 'Siguiente';
      $_lang['others_more'] = 'Más';
      $_lang['others_readmore'] = 'Leer Más';
      $_lang['others_follow'] = 'Siguenos';
      


      Ojo, que necesitaras crear este archivo dentro de cada idioma que quieres soportar en tu pagina web con sus respectivas traducciones.

      Cuando ya tengas el archivo cargado en el servidor (y despues de limpiar el cache) puedes accesar tus traducciones con este tag:

      [[%others_readmore? &topic=`others` &namespace=`core` &language=`[[++cultureKey]]`]]


      Ojo, en el ejemplo de arriba te puestro el llamado completo, pero como te dije, los tags de topic, namespace y language son opcionales y solo necesarios si es el primer llamado para este archivo, ya que para futuros llamados toda la data ha sido previamente cargada.

      Puedes optar por manejar las ediciones de las frases por el manager o por el archivo php. En lo personal me siento mas comodo directamente a traves del archivo php, pero esto es finalmente una preferencia del usuario.

      Espero que te ayude.

      Saludos,
      Jose R. Lopez