Skip Navigation
Actualizado
febrero 21, 2023

WPML puede leer un archivo de configuración que le dice lo que necesita traducción en temas y plugins. El archivo se llama wpml-config.xml y se coloca en la carpeta raíz del plugin o tema.

Contenido

  1. Finalidad del fichero de configuración lingüística
  2. Generación automática del archivo wpml-config.xml
  3. Estructura y sintaxis
  4. Uso del archivo de configuración de idioma WPML con temas hijo

Propósito

Como parte de lograr la compatibilidad con WPML, también debe crear un archivo de configuración que le ayudará con el mantenimiento de la compatibilidad en sus futuras versiones. WPML puede traducir cualquier cosa en su sitio de WordPress, pero usted necesita decirle lo que necesita traducción. Este archivo lo hace.

Vaya a la página WPML Configuración.

Página de configuración de WPML
Página de configuración de WPML

Esta página le dice a WPML todo lo que necesita saber, incluyendo qué campos personalizados traducir o sincronizar, qué entradas personalizadas y taxonomías deben ser multilingües e incluso qué textos de administración traducir.

El archivo de configuración de idioma incluye esta información para que cada usuario no tenga que introducirla manualmente en la página de administración.

Para algunos de los temas y plugins, alojamos los archivos de configuración de idioma en nuestros servidores. Puede ver una lista aquí. Se establece para anular el archivo de configuración de idioma local que se coloca dentro de la carpeta raíz del tema o plugin.

WPML también le permite anular manualmente cualquier ajuste cargado por los archivos de configuración de idioma de temas y plugins. Esto se aplica tanto a los archivos de configuración de idioma dentro de la carpeta raíz del tema o plugin como a los archivos de configuración de idioma alojados en nuestros servidores.

Generación automática del archivo wpml-config.xml

Si no está familiarizado con la creación de archivos XML, nuestro equipo ha creado el plugin Multilingual Tools que facilita esta tarea. Aunque inicialmente se concibió como una herramienta para ayudar a los autores de temas y plugins a preparar sus productos para el multilingüismo, puede utilizarse fácilmente para generar su propio archivo wpml-config.xml .

Para obtener más información sobre cómo generar su archivo wpml-config.xml, visite la página del complemento Multilingual Tools. En concreto, busque en la sección ¿Cómo genero archivos de configuración de idioma utilizando Herramientas multilingües?

Una vez que tenga el archivo de configuración, añádalo a la raíz de la carpeta de su tema. Si ya tiene uno, no lo sobrescriba. En su lugar, edite su archivo XML original y añada el código generado con el complemento Multilingual Tools.

Tenga en cuenta que este plugin no está diseñado para ser utilizado en los sitios de producción en vivo.

Para leer este tutorial y construir archivos de configuración de idioma para sus temas y plugins, puede comenzar con este ejemplo uno –
wpml-config.zip
.

Tendrás que editarlo, pero puedes utilizar las secciones y la estructura de este archivo.

Estructura y sintaxis

El contenido del archivo wpml-config.xml debe incluirse en estas etiquetas

<wpml-config>

y

</wpml-config>

Actualmente, puede configurar los siguientes datos y ajustes de traducción en este archivo de configuración:

  1. Contenido del constructor de páginas
  2. Campos personalizados
  3. Términos personalizados
  4. Tipos personalizados
  5. Taxonomías personalizadas
  6. Bloques Gutenberg
  7. Textos de administración / wp_options
  8. Configuración del conmutador de idiomas

1. Códigos cortos y contenido del constructor de páginas

WPML le permite utilizar el archivo wpml-config.xml para definir los shortcodes que deben añadirse a la traducción del contenido.

En los siguientes ejemplos, le mostramos cómo registrar los códigos cortos del constructor de páginas. Puede utilizar la misma estructura de código para registrar todos los tipos de shortcodes para su traducción.

1.1 Traducir cadenas

Consideremos un ejemplo en el que tiene un separador de texto añadido a una página utilizando Visual Composer. Ese separador tiene un título, y su shortcode se parece a esto:

[vc_text_separator title="Separator Title"]

Para traducir el título de este separador de texto, tenemos que añadir unas líneas a nuestro archivo wpml-config.xml. De esta forma, WPML «sabrá» que el título de ese separador necesita traducción. Esto en realidad sigue la misma lógica que la utilizada para los tipos de entradas personalizadas, campos personalizados, y otros.

El siguiente código es un ejemplo de lo que tenemos que añadir al archivo wpml-config.xml en este caso.

Repasemos la estructura del ejemplo anterior:

  • Comience con la etiqueta shortcodes. Cualquier shortcode en su sitio que necesite ser traducido debe ser puesto bajo esta etiqueta.
  • A continuación, utilice la etiqueta shortcode para envolver todas las etiquetas pertenecientes a un único shortcode.
  • La etiqueta llamada tag se utiliza para definir el nombre del shortcode. En este caso es el vc_text_separator. Puede añadir etiquetas personalizadas opcionales para mostrarlas tanto en el Editor de Traducción Avanzado como en el Editor de Traducción Clásico. Estas etiquetas también se incluyen al exportar a archivos XLIFF. Véase el ejemplo siguiente sobre etiquetas de etiquetas y atributos.
  • Los shortcodes pueden tener uno o más atributos, por lo que los envolvemos en la etiqueta attributes (plural) y utilizamos la etiqueta attribute (singular) para definir el título de cada atributo.

Los creadores de páginas incluyen (a veces) elementos de diseño que tienen atributos de enlace.

Puede hacer que los enlaces internos apunten automáticamente a la versión traducida de esa entrada utilizando la nueva opción de enlace del archivo wpml-config.xml shortcode: type=»link».

Puede utilizar el atributo encoding con éste. Maneja la codificación especial que utilizan varios constructores de páginas. El atributo encoding suele ser específico del page builder utilizado. Acepta los siguientes valores:

  • base64 – Código corto HTML sin formato de Visual Composer. El HTML se almacena como una cadena base64 en el shortcode.
  • vc_link – Formato de enlace especial para Visual Composer.
  • av_link – Formato de enlace especial para Enfold.
  • allow_html_tags – Normalmente las etiquetas HTML se eliminan de los atributos shortcode. Establezca encoding a allow_html_tags si el atributo shortcode debe permitir etiquetas HTML. Debe utilizarse con precaución, ya que permitir etiquetas HTML en algunas situaciones puede alterar el formato y suponer un problema de seguridad.

Si estás pensando en utilizar shortcodes con código url, asegúrate de leer la página sobre Traducción de shortcodes con código url.


La adición de etiquetas a etiquetas y atributos le permite mostrar etiquetas personalizadas en el Editor de Traducción Avanzada o en el Editor de Traducción Clásica. Esto puede ayudar al traductor a comprender mejor el contexto de la cadena.

Definición de etiquetas de shortcode personalizadas en el Editor de Traducción Avanzada
Definición de etiquetas de shortcode personalizadas en el Editor de Traducción Avanzada

1.2 Traducir medios

Puede utilizar WPML Media Translation para traducir imágenes en el contenido del constructor de páginas. Esto se hace mediante la conversión de ID de imagen y URL de imagen. Es necesario decirle al constructor de páginas que utiliza shortcodes cómo hacer esta conversión. El siguiente código es un ejemplo de lo que tenemos que añadir al archivo wpml-config.xml en este caso.

Puede utilizar los siguientes valores:

  • ignore-content – Puede utilizarse dentro de un elemento de etiqueta. Este valor es opcional y puede ser 0 o 1. Puede utilizar este atributo para lograr la compatibilidad con versiones anteriores de los nuevos shortcodes multimedia. Si el valor es 1 el contenido del shortcode no será procesado.
  • type – Puede utilizarse dentro de un elemento de etiqueta. También puede utilizar el contenido shortcode que contiene URL de los medios de comunicación como el valor opcional dentro de los medios de comunicación-url.
  • type – también puede utilizarse dentro de un elemento atributo. En este caso, puede tener uno de los siguientes valores opcionales:
    • media-ids – una lista de ID de medios separada por comas.
    • media-url – URL del medio
    • enlace – apunta a otra página del sitio y WPML lo convertirá automáticamente en la URL de la traducción de la página

1.3 Traducir los widgets del constructor de páginas

A partir de WPML 4.4.4, ahora puede registrar los widgets del constructor de páginas en su archivo de configuración de idioma. Consulte nuestra página de documentación sobre cómo registrar los widgets del constructor de páginas para su traducción.

1.4 Convertir automáticamente los ID de los shortcodes

A partir de WPML 4.5.9, puede declarar los IDs de entradas o términos de taxonomía ubicados en atributos de shortcode. Estos ID pueden convertirse automáticamente en el front-end de su sitio.

Por ejemplo, si consideramos el siguiente shortcode:

[foo_product_list product_ids="12,34,56"]

Podemos declarar que el atributo product_ids contiene IDs de post con la siguiente configuración:

&lt;shortcode&gt;
    &lt;tag ignore-content="1"&gt;foo_product_list&lt;/tag&gt;
    &lt;atributes&gt;
        &lt;attribute type="post-ids" sub-type="product"&gt;product&lt;/attribute&gt;
    &lt;/atributes&gt;
&lt;/shortcode&gt;

En el front-end, el shortcode se convertirá automáticamente en:

[foo_product_list product_ids="13,35,57"]

Puede utilizar los siguientes atributos de configuración:

  • tipo – post-ids o taxonomy-ids
  • subtipo (opcional) – puede ser la entidad específica del tipo si ya se conoce. Por ejemplo, product para el tipo de entrada personalizada Product. Si no está definida, se adivinará la entidad concreta.

La conversión de ID es versátil e intenta adaptarse a la mayoría de los formatos posibles de ID (ID único, lista de ID, matriz serializada, matriz codificada en JSON).

2. Campos personalizados

Se debe proporcionar el nombre del campo personalizado y también la acción que se espera que realice WPML: traducir, copiar, copiar una vez, ignorar.

Este bloque deberá anidarse bajo la etiqueta <wpml-config>.

Puede configurar las siguientes opciones de traducción para los campos personalizados:

  • translate: permite al usuario traducir el valor del campo personalizado. Estos campos aparecen en la pantalla del Editor de traducciones y pueden enviarse a cualquiera de los servicios profesionales de traducción.
  • copiar: esta acción copia el valor del campo personalizado del idioma por defecto a los idiomas secundarios. Esto significa que la actualización del valor del campo personalizado del idioma predeterminado siempre se copiará en el idioma secundario. Los campos personalizados configurados para copiar no aparecen en la pantalla del Editor de traducciones.
  • copy-once: El valor del campo personalizado se copia al idioma secundario en el proceso de traducción inicial. Los campos personalizados que utilicen la acción copy-once no aparecerán en la pantalla del Editor de traducciones. Sin embargo, el usuario puede cambiar el valor del campo personalizado del idioma secundario para que sea diferente del idioma por defecto utilizando la pantalla de edición de la entrada.Es preferible establecer los campos personalizados que contienen ajustes como el color de fondo, color de fuente, tamaño de fuente, y otros, para copiar una sola vez. Esto permite al usuario tener diferentes configuraciones para el contenido traducido que las establecidas para las entradas y páginas en el idioma por defecto. Por ejemplo, el usuario quiere que el color de fondo del mismo elemento sea amarillo en el idioma por defecto y azul en el idioma secundario. Tenga en cuenta que la edición de un campo configurado como copy-once no marcará el campo como que necesita actualización. Esto se debe a que el campo no se copiará en una traducción existente, sólo se copiará cuando se cree la traducción.
  • ignorar: esta acción evita que el campo personalizado se copie en el idioma secundario.

Puede añadir atributos a las etiquetas > de campos personalizados<. Estos atributos personalizan los textos de las instrucciones en el Editor de Traducción Avanzado o en el Editor de Traducción Clásico.

  • puede ser línea, área de texto o visual, para mostrar una sola línea, área de texto o WYSIWYG respectivamente.
  • junto al campo.
  • group especifica si el campo personalizado pertenece a un grupo y cuál debe ser la etiqueta del grupo. Cuando un campo está en un grupo:

* el campo se elimina de la sección de campos personalizados

* el campo se añade a la sección del grupo relacionado

También puede añadir atributos encode opcionales para cambiar la codificación del valor predeterminado(sin codificación). El atributo Encoding acepta los siguientes valores:

  • json
  • base64
  • urlencode

El atributo permite utilizar varias codificaciones. En ese caso, los valores deben separarse con una coma, por ejemplo: encoding="json,base64".

Cuando se utiliza este contenido wpml-config.xml, estos campos personalizados se muestran en el Editor de Traducción Avanzada o en el Editor de Traducción Clásica, como se muestra en la siguiente imagen.

Editor avanzado de traducciones
Editor clásico de traducciones

Etiquetas de campo personalizadas en el Editor de Traducción Avanzada

Etiquetas de campo personalizadas en el Editor de Traducción Clásica

2.1 Traducir subclaves en campos personalizados

WPML traduce por defecto todas las subclaves de los campos personalizados. Es posible evitar este comportamiento especificando qué subclaves deben traducirse.

También es posible utilizar comodines del mismo modo que se utilizan para los textos de Admin:

  • Haga coincidir todos los subcampos que empiecen por título- utilizando el código:
    <key name="title-*" />
  • Coincide con todos los subcampos y se utiliza generalmente para coincidir con un índice de matriz utilizando código:
    <key name="*" />
  • Para obtener [{"title":"First title"},{"title":"Second title"}] utilice el código

3. Términos personalizados

Es necesario proporcionar el nombre del término personalizado y también la acción que se espera que realice WPML: traducir, copiar, copiar una vez, ignorar.

Este bloque deberá anidarse bajo la etiqueta <wpml-config>.

Puede configurar las siguientes opciones de traducción para los campos personalizados:

  • translate: permite al usuario traducir el valor del término personalizado. Estos términos aparecen en la pantalla del Editor de traducciones y pueden enviarse a cualquiera de los servicios de traducción profesionales.
  • copiar: esta acción copia el valor del término personalizado del idioma por defecto a los idiomas secundarios. Esto significa que la actualización del valor del término personalizado del idioma predeterminado siempre se copiará en el idioma secundario. Los términos personalizados configurados para copiar no aparecen en la pantalla del Editor de traducciones.
  • copy-once: El valor del término personalizado se copia en la lengua secundaria en el proceso de traducción inicial. Los términos personalizados que utilicen la acción copy-once no aparecerán en la pantalla del Editor de traducciones. Sin embargo, el usuario puede cambiar el valor del término personalizado del idioma secundario para que sea diferente del idioma por defecto utilizando la pantalla de edición de entradas.
  • ignorar: esta acción evita que el término personalizado se copie en el idioma secundario.

4. Tipos personalizados

Los tipos de entrada personalizados que WPML debe traducir.


Puede añadir el atributo «display-as-translated» a la etiqueta para mostrar los tipos de entrada en el idioma predeterminado si no existe traducción.

Puede añadir el atributo «automatic» a la etiqueta para excluir un tipo de entrada de la traducción automática cuando utilice el modo Traducir todo. Tenga en cuenta que si utiliza este atributo, todo su archivo de configuración de idioma sólo funcionará para las versiones de WPML 4.5.0 y superiores.

5. Taxonomías personalizadas

Las taxonomías personalizadas que su plugin podría estar utilizando y que ya están registradas en WP.

Nota: las taxonomías que no necesitan traducción pueden simplemente omitirse de esta lista.

Puede añadir el atributo «display-as-translated» a la etiqueta para mostrar las taxonomías en el idioma por defecto si no existe traducción.

6. Bloques Gutenberg

Con el editor Gutenberg, construyes contenido usando bloques.

Puede especificar qué partes de su bloque Gutenberg deben traducirse añadiendo ajustes a wpml-config.xml.

Xpath se utiliza para definir las partes del texto que deben traducirse.

6.1 Registro de bloques Gutenberg como traducibles

Digamos que tenemos una imagen que se muestra utilizando el siguiente código:

Queremos traducir los valores de los atributos figcaption y alt de esta imagen.

Para ello, es necesario insertar el siguiente código en wpml-config.xml:

Tenga en cuenta que el tipo es core/image y no wp:image, ya que éste es el valor devuelto por la API de bloque.

Puedes especificar qué campos del bloque Gutenberg son enlaces. WPML reemplazará los enlaces con sus traducciones si están disponibles.

6.2 Traducción de los atributos de los bloques

He aquí un ejemplo de formato para la definición de un bloque editor:

Puede utilizar el elemento clave de la misma manera que se utiliza con los textos Admin / wp_options configuración. Esto también significa que puede tener elementos clave dentro de elementos clave padre.

Puede utilizar el atributo label para añadir etiquetas personalizadas opcionales que se mostrarán en el Editor de Traducción Avanzada junto a los elementos del bloque. Cuando el atributo label forma parte de la etiqueta gutenberg-block, se utilizará como etiqueta alternativa para los elementos del bloque que no tengan definida una etiqueta específica.

Etiqueta
Etiqueta «Fallback» en el Editor de Traducción Avanzada

El atributo search-method puede tener uno de dos valores:

  • comodines (por defecto)
  • regex.

Los comodines pueden utilizarse de la misma forma que se utilizan para los textos administrativos. Esto significa que se puede utilizar un asterisco(*) en el atributo name. He aquí un ejemplo de un bloque:

Podemos establecer la definición del bloque utilizando un comodín:

Esto nos permitirá traducir «El título» y «El contenido», ya que son los únicos atributos que empiezan por myp.

El regex nos permite tener una expresión regular en el atributo name. Esto puede ser muy útil para configuraciones complejas. He aquí un ejemplo de un bloque:

Podemos definir el bloque con una expresión regular:

Esto nos permitirá traducir «El título» y «El contenido», ya que son los únicos atributos que no empiezan por _.

Algunos plugins de bloque guardan datos en una cadena JSON codificada en URL dentro del atributo de un bloque. El atributo encoding permite descodificar la cadena y registrar sus subclaves para la traducción.

Por ejemplo, el plugin LazyBlocks almacena el contenido del campo repetidor en una cadena JSON codificada:

Puede registrar las subclaves firstname y lastname utilizando la siguiente configuración XML:

6.3 Espacio de nombres de bloque

Puede tener una configuración global para el espacio de nombres del bloque.

Si la configuración del bloque es la misma para todos los bloques de un espacio de nombres, puede escribirse así:

6.4 Conversión automática de ID en bloques

La conversión de ID es versátil e intenta adaptarse a la mayoría de los formatos posibles de ID (ID único, lista de ID, matriz serializada, matriz codificada en JSON).

Considerando el siguiente bloque:

&lt;!-- wp:foo/form {"ids":[27,28]} --&gt;
&lt;div class="wp-block-foo-form-wrap"&gt;
	&lt;form class="foo-form" action="" method="post"&gt;
		&lt;input type="hidden" name="foo_form_post_ids" value="27,28" /&gt;
		&lt;input type="submit" /&gt;
	&lt;/formulario&gt;
&lt;/div&gt;
&lt;!-- /wp:foo/form --&gt;

Podemos declarar, como IDs de post, los ids de atributo de bloque y el valor de atributo de etiqueta HTML foo_form_post_ids como se indica a continuación:

&lt;gutenberg-block type="foo/form" translate="0"&gt;
  &lt;key name="ids"&gt;
    &lt;key name="*" type="post-ids" sub-type="post" /&gt;
  &lt;/key&gt;
  &lt;xpath type="post-ids" sub-type="post"&gt;//*[@name="foo_form_post_ids"]/@value&lt;/xpath&gt;
&lt;/gutenberg-block&gt;

Y el bloque se convertirá con mayor prioridad en el filtro render_block_data como se indica a continuación:

&lt;!-- wp:foo/form {"ids":[42,43]} --&gt;
&lt;div class="wp-block-foo-form-wrap"&gt;
	&lt;form class="foo-form" action="" method="post"&gt;
		&lt;input type="hidden" name="foo_form_post_ids" value="42,43" /&gt;
		&lt;input type="submit" /&gt;
	&lt;/form&gt;
&lt;/div&gt;
&lt;!-- /wp:foo/form →

Puede utilizar los siguientes atributos de configuración:

  • tipo – puede ser post-ids o taxonomy-ids
  • subtipo (opcional): puede ser la entidad específica del tipo si ya se conoce. Por ejemplo, product para el tipo de entrada personalizada Product. Si no se define, se adivinará la entidad específica.

7. Textos de administración / wp_options

Cadenas que forman parte de las opciones que los plugins o temas guardan en la tabla wp_options.

Cuando los temas y plugins utilizan get_option, leen valores de la tabla wp_options. WPML puede filtrar estas llamadas y proporcionar traducción a los valores de estas opciones.

Esto funciona si el registro wp_option es una simple cadena pero también cuando es un array serializado.

Para traducir una única opción, añada una entrada clave en admin-texts. Para traducir un array serializado, añade varias claves bajo una clave, como puedes ver en my_plugin_options en el ejemplo de abajo.

Es posible utilizar el comodín * en subclaves como en el siguiente caso.

Es igual a este código:

Tenga en cuenta que el comodín * NO funciona en las claves padre:

8. Configuración del conmutador de idiomas

Habilita una configuración específica para el cambiador de idioma incorporado en WPML. También se puede utilizar para restablecer la configuración del conmutador de idiomas si se ha modificado desde el backend (a partir de sus valores iniciales).

Para ver los nuevos cambios, asegúrese de hacer clic en el botón Restaurar valores predeterminados en la parte inferior de la página WPML → Idiomas.

 


No todas estas secciones tienen que estar presentes en el archivo de configuración, sino sólo las que se aplican a su plugin o tema.

Uso del archivo de configuración de idioma WPML con temas hijo

Si está utilizando un tema hijo, el archivo de configuración de idioma del tema padre prevalece sobre el del tema hijo. WPML proporciona una página de configuración que le permite anular esto fácilmente con cualquier configuración personalizada.

Consideremos un ejemplo en el que el archivo de configuración de idioma del tema principal establece que el tipo de entrada personalizada «Propiedad» sea traducible.

El archivo de configuración del idioma principal está estableciendo la propiedad custom post type para traducir

Si está utilizando un tema hijo y desea configurar el tipo de entrada personalizada «Propiedad» para que no sea traducible, vaya a la página WPMLConfiguración y haga clic en la pestaña Configuración XML personalizada. Utilice el editor para establecer el tipo de entrada personalizada «Propiedad» como no traducible. Simplemente, establezca el valor del atributo translate en 0 en lugar de 1.

Anulación de la configuración de idioma del tema principal
Anulación de la configuración de idioma del tema principal

Los ajustes de la pestaña Configuración XML personalizada tienen prioridad sobre los ajustes del archivo de configuración de idioma del tema principal.