Cómo cambiar el idioma de selección de enlace de forma dinámica utilizando thymeleaf internacionalización y la primavera

Gustavo Delgado :

Estoy desarrollando un sitio web que debe tener la internacionalización y estoy tratando de cambiar la selección de idioma del texto para que sea render de forma dinámica en función del idioma del usuario está utilizando en este momento.

Digamos que el sitio web está en portugués en este momento, entonces la selección de idioma del texto debe leer 'Inglés' y el valor debe cambiar en consecuencia y viceversa.

El código, ya que es en este momento:

<select class="form-control dropdown2 col-lg-2 col-10 text-white" id="locales">
      <option>Idioma/Language</option>
      <option value="en" th:text="#{langEN}"></option>
      <option value="pt_BR" th:text="#{langPT}"></option>
</select>

$(document).ready(function() {
    $("#locales").change(function() {
        var selectedOption = $('#locales').val();
        if (selectedOption != '') {
            window.location.replace('?lang=' + selectedOption);
        }
        if(document.getElementById("clientPage")){
            window.location.replace(window.location.href + '&lang=' + selectedOption);
        }
    });
});

Y aquí está un ejemplo de lo que estoy tratando de lograr:

<a th:href="#{langURL}" th:text="#{lang}"></a>

donde ambos langURLy langse fijará en message.properties en cada idioma.

EDITAR:

Mi problema fue resuelto mediante el siguiente código:

<a th:href="@{/?lang=}+#{lang.url}" th:text=#{lang.text}></a>
Ioannis Barakos:

No estoy seguro de si se han creado todas las Beans que deben crearse para lograr esto, así que voy a proporcionar toda la ayuda que puedo para que alguien pueda configurar la primavera + thymeleaf desde cero.

En primer lugar establecer el frijol localResolver y establecer un entorno local por omisión:

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver slr = new SessionLocaleResolver();
    slr.setDefaultLocale(Locale.ENGLISH);
    return slr;
}

Luego, en su clase @Configuration (que debe implementar la interfaz WebMvcConfigurer) establecer el localeChangeInterceptor por lo que cambia el lenguaje basado en el langparámetro de cada solicitud:

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
    lci.setParamName("lang");
    return lci;
}

Y establecer el interceptor interceptor en el registro de aplicación:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

Eso es todo para la configuración del resorte. Ahora tiene que añadir archivos messages.properties en la carpeta src / main / recursos. El idioma se establece en las messages.properties nombre de fichero con el siguiente formato: mensajes _ ?? propiedades, donde ??. es el código de idioma, por ejemplo: messages_en.properties o messages_fr.properties.

También tenga en cuenta que si un código de idioma (parámetro lang) no existe como un local existente, entonces la aplicación va a caer de nuevo a la configuración regional predeterminada. valor.

Por último, asegúrese de que sus URL incluyen el parámetro lang=<language>es decir,http://example.com/page?lang=fr

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=362177&siteId=1
Recomendado
Clasificación