Saltar navegación

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 los foros 6 días a la semana, 22 horas por día.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 17:00 8:00 – 17:00 8:00 – 17:00 8:00 – 17:00 8:00 – 17:00 -
- - - - - - -

Zona horaria del aficionado: Europe/Madrid (GMT+02:00)

Etiquetado: 

Este tema contiene 5 respuestas, tiene 2 voces.

Última actualización por Paola Mendiburu hace 1 año, 8 meses.

Asistido por: Paola Mendiburu.

Autor Entradas
septiembre 28, 2023 en 11:54 am #14481171

Bernardo Casal

Estoy tratando de:
Tengo un app angular que cargo en forma de plugin dentro de wordpress. En dicho wordpress tengo instalado wpml para la gestión de idiomas. Si selecciono en Ajustes WPML / Idiomas que el formato de la url del idioma sea con "distintos idiomas en los directorios", por alguna razón que desonozco el datepicker de la aplicación angular no acepta el LuxonAdapter pasando a funcionar sólo con DateTime de JS. Esto sólo sucede cuando la url es distinta del idioma principal, inglés. Si la url tiene carpeta (/es, /it) el datepicker de angular material carga, pero sólo recibe y devuelve JS Datetime.
Dicho problema tampoco existe si en lugar de seleccionar ese patrón para las url, selecciono la tercera opción, "Nombre del idioma agregado como parámetro" ((enlace oculto, por ejemplo)

URL de (mi) sitio web donde aparece el problema: se carga en la página raíz. Solo funciona en el idioma principal. Todos los archivos de la aplicación angular se están cargando correctamente. He forzado el idioma de la app angular y funciona exactamente igual, así que no es por las traducciones de la misma.

2023-09-28_13-51.jpg
Sin nombre.jpg
2023-09-28_13-46.png
septiembre 29, 2023 en 10:12 am #14486993

Paola Mendiburu
Partidario de WPML desde 11/2020

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola!

Soy Paola y espero que todo vaya bien.

Por lo que comentas parece que la función solo es compatible cuando se añade el idioma como parámetro, parece que algo interfiere cuando se añade el idioma como parámetro.

Lamentablemente no damos soporte para código personalizado, está fuera de nuestro alcance.

Que tengas un buen día!

septiembre 29, 2023 en 10:29 am #14487099

Bernardo Casal

Es al contrario. Cuando se usa el idioma como parámetro funciona correctamente. Cuando se usa el idioma en carpeta es cuando falla para cualquier otro que no sea el principal.
Realmente no es código personalizado, es un material date picker con su adaptador para LuxonJS, si bien da el mismo error con el adaptador para MomentJs

septiembre 29, 2023 en 3:09 pm #14488461

Paola Mendiburu
Partidario de WPML desde 11/2020

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Madrid (GMT+02:00)

Si eso es lo que he indicado en la respuesta anterior, que solo es compatible con idioma por parámetro.

¿Me podría indicar el error que le da cuando usa idioma por directorio por favor?

octubre 3, 2023 en 7:03 am #14501553

Bernardo Casal

Disculpa, no había visto la respuesta. Se puede recrear el error si creas una app angular básica con un material date picker con soporte para idioma, es decir, capturando el idioma de wordpress y cambiando idioma y locale del datepicker en consonancia. Si lo metes en un widget podría quedar así la función widget:

        private function widget(): void {
            $inUrl = get_option(self::SETTING_IN_URL, '/');
            $windowWp = [
                "translations" => $this->getPreloadedTranslations(),
                "app_url" => plugins_url("tnr-cliente/", __FILE__)
            ];
            if (defined('ICL_LANGUAGE_CODE')) {
                if (ICL_LANGUAGE_CODE !== 'en') {
                    $inUrl = ICL_LANGUAGE_CODE . $inUrl;
                }
                $windowWp['lang'] = ICL_LANGUAGE_CODE;
            }
            $windowWp['inUrl'] = $inUrl;
            ?>
            <div class="reservation-form-widget">
                <app-root></app-root>
            </div>
            <script>window.WP = <?php echo json_encode($windowWp, JSON_THROW_ON_ERROR); ?></script>
            <?php
            wp_enqueue_script("main.js");
            wp_enqueue_script("runtime.js");
            wp_enqueue_script("polyfills.js");
            wp_enqueue_script("vendor.js");
            wp_enqueue_style("widget_style");
            wp_enqueue_style("view_style");
        }

En la aplicación angular debes indicar que deseas usar luxonadapter o momentadapter para uso de la fechas en datepicker con estas librerias (con cualquiera de los dos adapters falla). Por lo que sea, dicho adapter no carga dentro del wordpress en el caso de que se use este tipo de routing de idioma.

octubre 3, 2023 en 12:13 pm #14504549

Paola Mendiburu
Partidario de WPML desde 11/2020

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola!

Prueba a cambiarlo por éste código y dime si te funciona con Idioma por directorio:

private function widget(): void {
    $inUrl = get_option(self::SETTING_IN_URL, '/');
    $windowWp = [
        "translations" => $this->getPreloadedTranslations(),
        "app_url" => plugins_url("tnr-cliente/", __FILE__)
    ];
    
    // Check if WPML is active
    if (function_exists('icl_get_languages')) {
        $languages = icl_get_languages('skip_missing=0');
        if (!empty($languages)) {
            $current_language = $languages[ICL_LANGUAGE_CODE];
            $inUrl = $current_language['url'];
            $windowWp['lang'] = ICL_LANGUAGE_CODE;
        }
    }
    
    $windowWp['inUrl'] = $inUrl;
    ?>
    <div class="reservation-form-widget">
        <app-root></app-root>
    </div>
    <script>window.WP = <?php echo json_encode($windowWp, JSON_THROW_ON_ERROR); ?></script>
    <?php
    wp_enqueue_script("main.js");
    wp_enqueue_script("runtime.js");
    wp_enqueue_script("polyfills.js");
    wp_enqueue_script("vendor.js");
    wp_enqueue_style("widget_style");
    wp_enqueue_style("view_style");
}

El tema '[Cerrado] URL format with folders problem with angular material date picker' está cerrado a nuevas respuestas.