multi-idioma https://drupaladicto.com/ es Imprimir valores traducidos en un Twig paragraphs https://drupaladicto.com/snippet/imprimir-valores-traducidos-en-un-twig-paragraphs <span class="field field--name-title field--type-string field--label-hidden">Imprimir valores traducidos en un Twig paragraphs</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>Es posible que te hayas encontrado con la necesidad de imprimir algún contenido, dentro de un paragraphs en un sitio multi-idioma.</p> <p>En mi caso me tocó hacerlo con el witget de Turitop, para un sitio en dos idiomas, así que comparto el ejemplo por si te hace falta.</p> <p>La solución es implementar una preprocess function:</p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mar, 08/08/2023 - 16:57</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><ol><li>Activa el modo debug, para conocer el nombre de la plantilla para el paragraphs donde quieres imprimir el valor.<br />  </li> <li>Añade la siguiente función preproceso, dentro del archivo (.theme) en tu tema personalizado. <pre> function ishow_preprocess_paragraph(&amp;$variables) {   $variables['lang_id'] = $variables['paragraph']-&gt;language()-&gt;getId(); }</pre> </li> <li>Añade el siguiente código dentro de la plantilla y sustituye los valores, según lo que quieras imprimir, en la línea del idioma correspondiente.</li> </ol></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><p><strong>CONTENIDO PLANTILLA paragraphs.html.twig</strong></p> <p>{% block paragraph %}<br /> &lt;div{{ attributes.addClass(classes) }}&gt;<br /> {% block content %}<br /> {{ content }}<br /> {% endblock %}<br /> &lt;/div&gt;<br /> {% endblock paragraph %}</p> <p><strong>ESTO PASA A CONVERTIRSE EN LO SIGUIENTE</strong></p> <pre> {% block paragraph %}   &lt;div{{ attributes.addClass(classes) }}&gt;     {% block content %}    {#{{ content }}#} #Anulo la variable content, para que sólo se muestre el valor del widtget Turitop <strong>{% if lang_id == 'en' %}</strong>    &lt;div class="load-turitop" data-service="P1" data-lang="en"  data-embed="box"&gt;&lt;/div&gt; <strong>{% else %}</strong>         &lt;div class="load-turitop" data-service="P1" data-lang="es"  data-embed="box"&gt;&lt;/div&gt; <strong>{% endif %}</strong>     {% endblock %}     &lt;script id="js-turitop" src="https://app.turitop.com/js/load-turitop.min.js" data-company="I437" data-ga="no" data-buttoncolor="green" data-afftag="ttafid"&gt;&lt;/script&gt;   &lt;/div&gt; {% endblock paragraph %}</pre> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/default_images/snippet-pager.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/twig" hreflang="es">twig</a></div> <div class="field__item"><a href="/categoria/twig-template" hreflang="es">twig template</a></div> <div class="field__item"><a href="/categoria/content-translations" hreflang="es">content translations</a></div> <div class="field__item"><a href="/categoria/translation" hreflang="es">translation</a></div> <div class="field__item"><a href="/categoria/language" hreflang="es">language</a></div> <div class="field__item"><a href="/categoria/multi-idioma" hreflang="es">multi-idioma</a></div> <div class="field__item"><a href="/categoria/multilanguage" hreflang="es">multilanguage</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img src="/sites/default/files/styles/max_325x325/public/imagenes/portada-snippet-grande.png?itok=JZyTAbRq" width="325" height="176" alt="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid image-style-max-325x325" /> </div> </div> </article> </div> </div> Tue, 08 Aug 2023 14:57:02 +0000 webmaster 450 at https://drupaladicto.com Multi-idioma | Configuración en Drupal 9 (Parte 2) https://drupaladicto.com/curso/multilanguage/multi-idioma-configuracion-en-drupal-9-parte-2 <span class="field field--name-title field--type-string field--label-hidden">Multi-idioma | Configuración en Drupal 9 (Parte 2)</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2><strong>Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... <a href="https://youtu.be/N5mkvPrI7HY" target="_blank">HAZ CLIC AQUI</a></strong></h2> <p>        Continuando con las configuraciones, para hacer que nuestro sitio con Drupal 9, esté disponible para añadir varios idiomas, además de mostrar sus contenidos traducidos, menús, bloques, etc, de cara al usuario. Vamos a repasar y corregir algunos detalles que queradon pendientes en el anterior capítulo.</p> <h2>     Cómo traducir títulos de las vistas</h2> <p>          En el anterior capítulo, estuvimos realizando los cambios necesarios, para que se mostraran nuestros productos, en varios idiomas, utilizando el selector ubicado en la parte superior de la web; pero si nos fijamos bien en el resultado obtenido, de inmediato, nos daremos cuenta, de que, a pesar de que podemos ver el nombre de cada categoría, en los diferentes idiomas, el título del bloque, sigue mostrándose en español.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 65.81%;" data-ratio="65.81" data-b-token="b-b7c1bb025cb" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bf5fa9b85.jpg?itok=ONxmcKzy" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="306" typeof="foaf:Image" /></div></div> <p>          Si hacemos clic sobre el editor en línea de Drupal, a la altura del título, veremos que nos muestran las opciones Configurar bloque y <strong>Traducir Bloque</strong>, pero si seleccionamos la segunda opción, nos encontraremos con la traducción correspondiente a la descripción del bloque, no a su título, que es lo que buscamos.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 27.04%;" data-ratio="27.04" data-b-token="b-e223afa02e7" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bf9e4782d.jpg?itok=FQ3czb0n" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="466" height="126" typeof="foaf:Image" /></div></div> <p>     Se nos viene a la mente una idea interesante, donde la solución debería ser tan simple como, ir a nuestra url de administración de las Taxonomías en "/admin/structure/taxonomy/manage/categoria/translate", y a continuación traducir el vocabulario.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 27.04%;" data-ratio="27.04" data-b-token="b-df639bce521" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bfc161045.jpg?itok=WdaeYniR" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="466" height="126" typeof="foaf:Image" /></div></div> <p>     Pero si nos fijamos mejor, el nombre del bloque está el plural "Categorías" y nuestro vocabuliario está en singular "Categoría", entonces, ¿cómo hago para que se traduzca este título bloque?</p> <p>     Si recuerdas, el listado de categorías está creado a partir de una Vista, de manera que, al igual que hicimos para habilitar que el contenido mostrado cambiara de acuerdo con la selección del usuario, al utilizar la interfaz; en este caso, tendremos que traducir el título de la vista y no del bloque. Para ello haremos clic sobre el selector que nos aparecerá justo encima de la vista y veremos una nueva opción "Traducir vista en contexto: tipo de entidad vista", que nos permitirá acceder específicamente a la traducción del título de esta vista.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 27.04%;" data-ratio="27.04" data-b-token="b-b58a6c063d9" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bfde25015.jpg?itok=QTSRVJd_" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="466" height="126" typeof="foaf:Image" /></div></div> <p>     Al hacer clic en esta opción, accederemos a una pantalla parecida al resto de contenidos, donde veremos el idioma original en que se creó el contenido y a continuación todos los lenguajes que hayamos activado en nuestra web.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 41.85%;" data-ratio="41.85" data-b-token="b-7f6d980f067" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c00aba2cd.jpg?itok=nr_pbPwN" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="466" height="195" typeof="foaf:Image" /></div></div> <h2>Cómo traducir Bloques</h2> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 55.91%;" data-ratio="55.91" data-b-token="b-69148074ac8" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c02ec2512.jpg?itok=BdVVUa-n" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="260" typeof="foaf:Image" /></div></div> <p>        Ya hemos mencionado que en el caso de los bloques, al igual que con los Paragraphs, al funcionar como contenedores de contenido, su configuración para que puedan traducirse varía, con respecto al resto de los contenidos y tipos de Drupal.</p> <p>        Vamos a realizar un ejemplo para que lo puedas ver más claro, añadiremos un bloque personalizado desde la interfaz, para ello iremos a la url "/block/add", y allí pondremos un título y algo de contenido, en español, sólo para comprobar si hemos entendido el proceso de traducción de los bloques correctamente.</p> <p>      El resultado debería ser algo parecido a la siguiente imagen, en la que sólo hemos configurado un título en el idioma español, para el bloque y dentro de éste una pequeña frase, simplemente para que podamos realizar la prueba adecuadamente.</p> <pre> Bloque en español ESTE ES EL CONTENIDO DE MI BLOQUE EN ESPAÑOL.</pre> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 95.27%;" data-ratio="95.27" data-b-token="b-8ba0d2636a0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c0583d698.jpg?itok=z3QXCDUE" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="443" typeof="foaf:Image" /></div></div> <p>     Ahora que ya tenemos nuestro bloque personalizado creado y con contenido en Español, procedermos a realizar la traducción, repitiendo el proceso explicado al principio.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 99.35%;" data-ratio="99.35" data-b-token="b-0ae0733e6a8" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c082c62f7.jpg?itok=9lH3DGqv" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="462" typeof="foaf:Image" /></div></div> <p>     El problema, es que, una vez guardados los cambios, si vamos a la página principal, y seleccionamos otro de los idiomas que hemos añadido, veremos que sólo se ha traducido el título del bloque, ¿qué nos está faltando?</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 27.04%;" data-ratio="27.04" data-b-token="b-2b8caac28d0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c0a14fc04.jpg?itok=tNyfl8ao" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="466" height="126" typeof="foaf:Image" /></div></div> <p>        La causa de que no veamos más opciones de traducción relacionadas con nuestro bloque personalizado, es porque tendremos que activarla en la Configuración Global de Traducciones, que ya mencionamos en el anterior capítulo, para ello, iremos a la url "/admin/config/regional/content-language", y comprobaremos que todavía no está activada la opción para habilitar la traducción de bloques personalizados.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 99.35%;" data-ratio="99.35" data-b-token="b-9ca223b94a2" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c0c629db3.jpg?itok=hB4a6GuT" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="462" typeof="foaf:Image" /></div></div> <p>        Cuando hayamos activado esta opción, tendremos que desplazarnos, en la misma página, un poco hacia abajo, para encontrar todas las opciones disponibles, y podremos seleccionar entonces, cuáles serán los campos para los que necesitaremos traducciones.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 44.73%;" data-ratio="44.73" data-b-token="b-c9ada163da0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c0e43dac9.jpg?itok=DLZcOAi8" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="208" typeof="foaf:Image" /></div></div> <p>        Podremos seleccionar todos los campos o sólo aquellos con los que vamos a trabajar, de esta forma, una vez guardados los cambios, si volvemos a nuestros bloques personalizados, comprobaremos que existen nuevas opciones para trabajar con las traducciones independientes para cada uno de ellos. </p> <p>        Como en este caso, trabajaremos las traducciones de cada bloque personalizado, de forma individual y no global, tendremos que hacerlo desde la librería de bloques, accediendo a la url "/admin/structure/block/block-content", y una vez allí, seleccionaremos el bloque con el cuál trabajaremos y podremos así proceder con la traducción de sus campos.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 78.28%;" data-ratio="78.28" data-b-token="b-ae2948d357c" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c10ee2157.jpg?itok=wT9fIk7a" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="364" typeof="foaf:Image" /></div></div> <p>       Al seleccionar Traducir, en veremos que esta vez, podremos añadir los diferentes indiomas para el resto de campos, como el de descripción y el cuerpo de nuestro bloque.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 78.28%;" data-ratio="78.28" data-b-token="b-5bd98844bdc" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c12d083f2.jpg?itok=4pdKG62u" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="364" typeof="foaf:Image" /></div></div> <pre> Bloquer en espagnol CECI EST LE CONTENU DE MON BLOC EN ESPAGNOL.</pre> <p>        Una vez hayamos concluido con todos los textos traducidos, a cualquiera de los idiomas que hayamos activado, podremos guardar los cambios y posteriormente comprobar que el resultado es el que esperábamos.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 96.34%;" data-ratio="96.34" data-b-token="b-b316746de18" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c14f741a4.jpg?itok=phRPw-Yc" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="465" height="448" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 30.46%;" data-ratio="30.46" data-b-token="b-6c6763dbd49" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Multilanguage Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311c182b8bfb.png?itok=J8qoXN2o" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="198" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sáb, 15/04/2023 - 09:30</span> Sat, 15 Apr 2023 07:30:45 +0000 webmaster 422 at https://drupaladicto.com Multi-idioma | Configuración en Drupal 9 (Parte 1) https://drupaladicto.com/curso/multilanguage/multi-idioma-configuracion-en-drupal-9-parte-1 <span class="field field--name-title field--type-string field--label-hidden">Multi-idioma | Configuración en Drupal 9 (Parte 1)</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-1109 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1109 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1109 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1109"> <section id="video-only-1109" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-753-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-753-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-753-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/RwR01gp16-s&amp;max_width=0&amp;max_height=0&amp;hash=6DJUCXdRZUIpACsD1lgg-HshuGNlcTSQT-BIZYTIEz0" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-753-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--bloque-parrafo paragraph--view-mode--default"> <div class="clearfix text-formatted field field--name-field-textos-curso field--type-text-long field--label-hidden field__item"><h2><strong>Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... <a href="https://youtu.be/RwR01gp16-s" target="_blank">HAZ CLIC AQUI</a></strong></h2> <p>      Dentro de los requisitos más habituales en proyectos web realizados para grandes compañías, está la opción de poder crear y gestionar contenidos en varios idiomas. Esto les permite llegar a un mayor número de publico, además de facilitar, en algunos casos, las tareas de mantenimiento por parte del personal cuya lengua materna no sea el inglés.</p> <p>     En las versiones anteriores a Drupal 8, teníamos que activar los módulos "Locale" y "Translation Content", además descargar los archivos de traducciones desde la <a href="https://localize.drupal.org/translate/languages">página oficial de Drupal</a>, y una vez descargados dichos archivos, importarlos dentro de nuestro proyecto para continuar con el proceso de adaptar nuestros contenidos a varios idiomas.</p> <p>     A partir de la versión 8, el proceso de activación de las traducciones a todos nuestros contenidos se modificó considerablemente, ya que se incluyeron las novedades, como los "paragraphs" y bloques personalizados, que ofrecían grandes cambios en la creación, gestión y presentación de los contenidos, creando nuevas estructuras más complejas, que su inicio presentaron varios errores y limitaciones cuando se trataba de añadir otros idiomas al proyecto.</p> <h2>Cómo configurar tu web multi-idioma en Drupal 9    </h2> <p>     Por defecto, en Drupal 9, nos vienen integrados varios módulos relacionados con la gestión de idiomas y traducción, tanto de los contenidos, como de las configuraciones de la interfaz, para aquellos que gestionen el proyecto. Si necesitas añadir uno o varios idiomas a tu proyecto web tendrás que seguir los siguientes pasos:</p> <h3>     Paso 1 Activación de módulos para traducción:</h3> <p>     Los tres módulos encargados de activar las opciones para traducir tus contenidos, configuración de tu interfaz de usuario o añadir nuevos idiomas son</p> <ul><li><strong>Language: q</strong>ue permite configurar los idiomas disponibles para el proyecto.<br />  </li> <li><strong>Configuration Translation</strong>: que amplia las opciones de traducción de los menús y otras opciones disponibles para el usuario gestor o editor.<br />  </li> <li> <p><strong>Content Translation: </strong>que añade una nueva pestaña a tus contenidos, una vez hayas activado la opción los tipos de contenido que prefieras, para poder traducirlos según tus necesidades.</p> </li> <li> <p><strong>Interface Translation:</strong> al igual que el <strong>Configuration Translation</strong>, añade la posibilidad de traducir elementos de la interfaz de usuario.</p> </li> </ul><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 64.71%;" data-ratio="64.71" data-b-token="b-55ead447589" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bbbfe59ea.png?itok=gZFqLNch" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="408" height="264" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 31.08%;" data-ratio="31.08" data-b-token="b-115e17ec184" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bbf9ad0e8.png?itok=Z3Du3HLP" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="202" typeof="foaf:Image" /></div></div> <h3>Cómo añadir nuevos idiomas:</h3> <p>     Una vez activados los módulos del grupo Multi idioma, podremos comenzar a añadir todos los idiomas que necesitemos en nuestro proyecto. Para ello, iremos a la url "/admin/config/regional/language", y desde allí podremos añadir los idiomas desde el botón "Agregar idiomas".</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 100.62%;" data-ratio="100.62" data-b-token="b-4b89c5c47a3" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bc228d862.jpg?itok=Ycl-1l4o" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="646" height="650" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 71.95%;" data-ratio="71.95" data-b-token="b-08314993b10" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bc378d620.jpg?itok=ZiIZY8Zt" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="606" height="436" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 32.46%;" data-ratio="32.46" data-b-token="b-a20ae69754d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bc4f2e381.jpg?itok=kMnSOiHb" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="211" typeof="foaf:Image" /></div></div> <h3>Cómo habilitar las traducciones para nuestros contenidos:</h3> <p>     Una vez añadidos los idiomas adicionales para nuestra web, podremos configurar cuáles contenidos y tipos de contenidos estarán disponibles para su traducción, esto incluye los bloques, taxonomías, elementos de menús personalizados, etc.</p> <p>     Para acceder a la pantalla donde podremos configurar estas opciones, debemos dirigirnos a la url "/admin/config/regional/content-language", y en la parte superior izquierda de la pantalla, veremos el listado de todos los contenidos disponibles en nuestro proyecto, donde una vez seleccionados, serán añadidos en el listado que se muestra justo debajo de estos, para poder activar los demás elementos que podrían estar relacionados con ellos.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 32.46%;" data-ratio="32.46" data-b-token="b-12f857d007e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bc6b34423.jpg?itok=UKs1ydeu" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="211" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 63.54%;" data-ratio="63.54" data-b-token="b-0e981dd6ec1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bc7e607b9.jpg?itok=LJ295u8c" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="413" typeof="foaf:Image" /></div></div> <h3>Cómo traducir Paragraphs:</h3> <p>    En el caso de los Paragraphs, con relación a la traducción de los contenidos, tendremos que habilitarlos desde la misma pantalla, pero no haremos clic en el botón de guardar que están en la parte inferior, hasta que hayamos seleccionado todos los elementos relacionados con ellos.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 63.54%;" data-ratio="63.54" data-b-token="b-1faf824adeb" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bcaa037d5.jpg?itok=ratSyH1k" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="413" typeof="foaf:Image" /></div></div> <p>Una vez hallamos activado los elementos y tipos de contenidos que deseamos estén disponibles para ser traducidos, si volvemos a la pantalla de edición de cualquiera de ellos, veremos una nueva pestaña traducir y una vez hagamos clic sobre ella, nos creará una copia exacta del contenido original y podremos comenzar a sustituir los textos por los del nuevo idioma.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 43.08%;" data-ratio="43.08" data-b-token="b-9bf3e180375" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img alt="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" title="Drupal 9 multilanguage | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/file-6311bce2b2ff7.png?itok=knBqR1fy" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="280" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sáb, 15/04/2023 - 09:15</span> Sat, 15 Apr 2023 07:15:06 +0000 webmaster 421 at https://drupaladicto.com Cambiar el nombre del idioma en in language switcher (English > En) https://drupaladicto.com/snippet/cambiar-el-nombre-del-idioma-en-language-switcher-english-en <span class="field field--name-title field--type-string field--label-hidden">Cambiar el nombre del idioma en in language switcher (English &gt; En)</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>Al instalar nuestro sitio multi-idioma en Drupal, en algunos casos nos encontraremos con la necesidad de que el selector de idiomas (Language Switcher), que viene con Drupal, muestre los nombres abreviados para cada indioma, ya que por defecto mostrará su nombre completo. En principio, para cambiarlo sólo deberíamos acceder a la url de configuración del módulo Language, previamente activado, accediendo a "/admin/config/regional/language" y allí seleccionar EDITAR y cambiar el nombre del idioma Ej. English a EN, pero esto no funciona correctamente y sólo te cambia el resto de los idiomas.</p> <p>Para solucionarlo, tendremos que añadir en nuestro archivo TUTEMA.theme, la siguiente función, cambiando sólamente en nombre equivalente a tu tema.</p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Mié, 01/03/2023 - 09:59</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><p>Para activar el selector de idiomas y luego modificar los nombres de cada indioma sigue estos pasos:</p> <ol><li>Activar los módulos Language, Configuration Translation, Content Translation y Interface Translation. (Todos vienen incluido en drupal 9).</li> <li>Añadir el o los idiomas adicionales para tu sitio web</li> <li>Activar el bloque para el selector de idiomas en "/admin/structure/block"</li> <li>Copiar la función que está debajo y añadirla a tu archivo TUTEMA.theme, luego, cambiar el nombre equivalente a tu theme</li> <li>Ejecutar los comando de borrar caché y actualizar base de datos.</li> </ol></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><pre> &lt;?php /** * Use language code for the language switcher * * @param $variables */ function TUTEMA_preprocess_links__language_block(&amp;$variables) {   foreach ($variables['links'] as $i =&gt; $link) {     // @var \Drupal\language\Entity\ConfigurableLanguage $linkLanguage     $linkLanguage = $link['link']['#options']['language'];     $variables['links'][$i]['link']['#title'] = $linkLanguage-&gt;get('id');   } } ?&gt;</pre> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/imagenes/snippets/snippet-pager_91.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/language" hreflang="es">language</a></div> <div class="field__item"><a href="/categoria/multi-idioma" hreflang="es">multi-idioma</a></div> <div class="field__item"><a href="/categoria/idiomas" hreflang="es">idiomas</a></div> <div class="field__item"><a href="/categoria/switch" hreflang="es">switch</a></div> <div class="field__item"><a href="/categoria/interfaz" hreflang="es">interfaz</a></div> <div class="field__item"><a href="/categoria/programacion" hreflang="es">programacion</a></div> <div class="field__item"><a href="/categoria/desarrollo" hreflang="es">desarrollo</a></div> <div class="field__item"><a href="/categoria/codigo" hreflang="es">código</a></div> <div class="field__item"><a href="/categoria/code" hreflang="es">code</a></div> <div class="field__item"><a href="/categoria/drupal-7" hreflang="es">drupal 7</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> </article> </div> </div> Wed, 01 Mar 2023 08:59:45 +0000 webmaster 116 at https://drupaladicto.com