Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en el foro 6 días a la semana, durante 22 horas por día.

Hoy no hay asistentes de soporte disponibles en el foro Spanish. Siéntase libre de enviar sus tiques y les daremos trámite tan pronto como estemos disponibles en línea. Gracias por su comprensión.

This thread is resolved. Here is a description of the problem and solution.

Problem: Cómo cambiar el código del idioma sin borrar los contenidos.

Solution: El código de lenguaje no sólo define la estructura de URLs sino que es el único elemento en la tabla de idiomas que no se puede cambiar una vez definido.

Por ello sólo hay dos opciones para esto:

Esta es la opción recomendada por WPML:

Crear dos idiomas customizados, copiar todo el contenido a cada uno y luego ocultar los idiomas originales. Si todo se muestra correctamente, se pueden eliminar los idiomas originales más adelante.

El primer paso sería crear dos idiomas customizados nuevos con el código deseado y añadirlos a WPML.

Una vez hecho esto, se copian los ficheros .mo que se necesiten con los nuevos códigos al fichero de idiomas de WordPress (wp-content/languages) en caso de que estés utilizando fichero .mo también.

Después se duplican todos los contenidos para cada idioma y una vez hecho esto, se pueden eliminar y/o ocultar los idiomas originales.

Aquí tenemos documentación y un videotutorial sobre cómo añadir un idioma customizado:

https://wpml.org/documentation/support/editing-wpmls-languages-table/

La opción de cambiarlo en la base de datos no se recomienda

Esto no se recomienda por los riesgos que hay de que algún componente se olvide y cause errores en la página

No podemos garantizar que vaya todo bien y no podemos revertir un cambio de este tipo si se produce un error. Este tipo de cambio es responsabilidad únicamente del usuario que lo realiza.

En todo caso, de hacerlo, se debería crear una copia de seguridad antes de proceder y tener soltura con el manejo de la base de datos de tu WordPress.

No se recomienda para usuarios inexpertos y los desarrolladores opinan avisan de que comporta cierto riesgo:

Dicho esto, en teoría esto se haría cambiando el código de lenguaje en estas tablas:

- _icl_languages: aquí cambiarías el código de lenguaje en la columna "code" - _ icl_flags en la columna lang_code - _icl_languages_translations en la columna "language_code" - _icl_locale_map en la columna "code"

Para cambiar el contenido y las traducciones existentes habría que reemplazar el código de lenguaje en estas tables, ya que desde aquí se conectan los posts y sus traducciones:

- _icl_translations en las columnas "language_code" y "source_language_code" - _icl_string_translations en la columna "language" - _icl_strings en la columna "language" en caso de que haya cadenas de texto originales en un lenguaje

Lo que también se debería comprobar para prevenir cables sueltos:

_options: comprobar si el código de lenguaje se está utilizando para alguna configuración importante, como "WPLANG" y otras. _postmeta: aquí el código de lenguaje puede encontrarse en algún adjunto postmeta o en alguna configuración, aunque no debería haber muchas entradas con esto.

Mo recomendamos realizar el cambio en la base de datos, y en todo caso se debe asegurar la web antes. Se supone que no es posible cambiar estos códigos a posteriori, con lo cual, si algo sale mal, necesitarías volver a instalar tu copia de seguridad.

Relevant Documentation:

Etiquetado: 

This topic contains 3 respuestas, has 3 mensajes.

Last updated by antonioA-34 hace 1 año.

Assigned support staff: Cristina.

Autor Publicaciones
septiembre 27, 2018 a las 1:41 pm #2770715

pabloG-8

Hola.

Quiero cambiar el código del idioma de MX y CO, para que quede cada url así: /es-co/ y /es-mx/
Necesito en lo posible NO tener que eliminar el idioma para evitar perder los contenidos

Esto es posible?

Adjunto una imagen

Gracias

septiembre 28, 2018 a las 9:40 am #2773153

Cristina

Hola Pablo,

lamentablemente, el código de lenguaje no sólo define la estructura de URLs sino que es el único elemento en la tabla de idiomas que no se puede cambiar una vez definido.

Por ello sólo hay dos opciones para esto:

- Esta es la opción recomendada por WPML:

Crear dos idiomas customizados, copiar todo el contenido a cada uno y luego ocultar los idiomas originales. Si todo se muestra correctamente, se pueden eliminar los idiomas originales más adelante.

El primer paso sería crear dos idiomas customizados nuevos con el código deseado y añadirlos a WPML.

Una vez hecho esto, se copian los ficheros .mo que se necesiten con los nuevos códigos al fichero de idiomas de WordPress (wp-content/languages) en caso de que estés utilizando fichero .mo también.

Después se duplican todos los contenidos para cada idioma y una vez hecho esto, se pueden eliminar y/o ocultar los idiomas originales.

Aquí tenemos documentación y un videotutorial sobre cómo añadir un idioma customizado:

https://wpml.org/documentation/support/editing-wpmls-languages-table/

- La opción de cambiarlo en la base de datos:

Esto no se recomienda por los riesgos que hay de que algún componente se olvide y cause errores en la página.

No podemos garantizar que vaya todo bien y no podemos revertir un cambio de este tipo si se produce un error. Este tipo de cambio es responsabilidad únicamente del usuario que lo realiza.

En todo caso, de hacerlo, deberías crear una copia de seguridad antes de proceder y tener soltura con el manejo de la base de datos de tu WordPress.

No se recomienda para usuarios inexpertos y los desarrolladores opinan avisan de que comporta cierto riesgo:

Dicho esto, en teoría esto se haría cambiando el código de lenguaje en estas tablas:

- _icl_languages: aquí cambiarías el código de lenguaje en la columna "code"
- _ icl_flags en la columna lang_code
- _icl_languages_translations en la columna "language_code"
- _icl_locale_map en la columna "code"

Para cambiar el contenido y las traducciones existentes habría que reemplazar el código de lenguage en estas tables, ya que desde aquí se conectan los posts y sus traducciones:

- _icl_translations en las columnas "language_code" y "source_language_code"
- _icl_string_translations en la columna "language"
- _icl_strings en la columna "language" en caso de que haya cadenas de texto originales en un lenguaje

Lo que también deberías comprobar para prevenir cables sueltos:

_options: aquí tendrías que comprobar si el código de lenguaje se está utilizando para alguna configuración importante, como "WPLANG" y otras.
_postmeta: aquí el código de lenguaje puede encontrarse en algún adjunto postmeta o en alguna configuración, aunque no debería haber muchas entradas con esto.

De todos modos, no recomendamos realizar el cambio en la base de datos, y en todo caso se debe asegurar la web antes. Se supone que no es posible cambiar estos códigos a posteriori, con lo cual, si algo sale mal, necesitarías volver a instalar tu copia de seguridad.

Aparte de todo esto, veo que tu sitio ahora mismo funciona con PHP 5.5., que es una versión que ya no tiene soporte de PHP y tampoco de WordPress. WPML funciona, pero la recomendación mínima es utilizar PHP 5.6. o superior. La recomendación oficial de WordPress ya incluye PHP 7.2. Para evitar problemas con el wordpress y los temas, te recomendaríamos actualizar el PHP.

Sin que tenga relación directa, te comento que tu instalación parece que sólo dispone de 40M de memoria de trabajo para WordPress, aunque el requisito mínimo para WPML son 128 M. Puedes aumentar la memoria de trabajo de tu WordPress añadiendo estas dos líneas a tu fichero wp-config.php en el directorio raíz de WordPress, justo antes de la línea “happy blogging”.

define('WP_MEMORY_LIMIT', '128M');
define( 'WP_MAX_MEMORY_LIMIT', '256128M' );

Esto agilizará los procesos de sincronización en tu site y evitará problemas de rendimiento, más si estáis utilizando Avada, que también es una tema con plugins que requieren muchos recursos.

Un cordial saludo,
Cristina

septiembre 28, 2018 a las 12:30 pm #2773809

pabloG-8

My issue is resolved now. Thank you!

mayo 18, 2019 a las 3:51 pm #3839237

antonioA-34

Hola, ¿hay que añadir algún código para mantener esos cambios cuando se actualice el plugin?

Leí que había que añadir este código en el fichero wp-config.php:

define('ICL_PRESERVE_LANGUAGES_TRANSLATIONS', true);

https://wpml.org/documentation/support/editing-wpmls-languages-table/

¿Es necesario?