Internacionalización y localización en Spring MVC
La internacionalización (i18n para abreviar) y la localización (l10n para abreviar) son conceptos importantes en la creación de aplicaciones en varios idiomas. Spring MVC proporciona un soporte completo que permite a los desarrolladores manejar fácilmente las necesidades de internacionalización y localización. Este artículo presentará cómo manejar la internacionalización y localización en Spring MVC y proporcionará código de muestra.
¿Qué son la internacionalización y la localización?
-
Internacionalización (i18n): La internacionalización se refiere al diseño y desarrollo de aplicaciones para que puedan adaptarse fácilmente a diferentes idiomas y regiones. Esto incluye localizar texto, fecha, hora, moneda, etc. para adaptarlo a diferentes prácticas culturales.
-
Localización (Localización - l10n): La localización se refiere a adaptar la interfaz y el contenido de una aplicación a un idioma y región específicos. Esto incluye traducir texto, ajustar formatos de fecha y hora, usar símbolos de moneda local y más para brindar una experiencia de usuario que se ajuste mejor a sus expectativas.
Internacionalización en Spring MVC
Spring MVC admite la internacionalización de las siguientes maneras:
-
Archivos de recursos: Spring MVC le permite crear archivos de recursos que contienen versiones en diferentes idiomas. Estos archivos de recursos incluyen el origen del mensaje, el formato de fecha y hora, el formato de moneda, etc. Diferentes idiomas y regiones tendrán diferentes archivos de recursos.
-
Análisis de configuración regional: Spring MVC
LocaleResolver
analiza la información de idioma y región solicitada por el cliente a través de la interfaz. De forma predeterminada, utilizaAccept-Language
un encabezado para determinar el idioma preferido del cliente, pero puede personalizarloLocaleResolver
para adaptarlo a sus necesidades específicas. -
Fuente: Spring MVC proporciona
MessageSource
interfaces para cargar y administrar archivos de recursos. Puede llamar a esto en su códigoMessageSource
para obtener el texto localizado. -
Bibliotecas de etiquetas: Spring MVC proporciona bibliotecas de etiquetas JSTL y tecnologías de visualización como Thymeleaf, lo que le permite localizar texto fácilmente en sus vistas.
Crear proyecto Spring MVC
Primero, asegúrese de haber instalado el entorno de desarrollo Java y Maven. A continuación, puede crear un nuevo proyecto Spring MVC utilizando Spring Initializer. Seleccione la configuración de su proyecto en https://start.spring.io/ , luego cree el proyecto y descárguelo.
Agregue dependencias de Spring Web y Thymeleaf
En el proyecto generado, debe agregar dependencias para Spring Web y Thymeleaf. En pom.xml
el archivo, asegúrese de que se hayan agregado las siguientes dependencias:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Esto incluirá todas las dependencias requeridas por Spring MVC y Thymeleaf.
Configurar archivos de recursos
En src/main/resources
el directorio, cree un messages.properties
archivo de recursos llamado para almacenar los mensajes internacionalizados predeterminados:
greeting.message=Hello, World!
En src/main/resources
el directorio, cree un messages_fr.properties
archivo de recursos llamado para almacenar mensajes internacionalizados en francés:
greeting.message=Bonjour, le Monde!
Configurar el analizador de internacionalización
Configurar analizadores de internacionalización en Spring MVC es muy sencillo. src/main/java/com/example/demo
Cree una WebConfig
clase de configuración en el paquete llamado:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import java.util.Locale;
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(Locale.US); // 设置默认语言
return resolver;
}
}
En el código anterior, creamos una WebConfig
clase de configuración para configurar el analizador de internacionalización. AcceptHeaderLocaleResolver
Los encabezados de la solicitud del cliente se analizan Accept-Language
para determinar el idioma preferido del cliente. Puede resolver.setDefaultLocale()
configurar el idioma predeterminado usando .
Crear controlador
src/main/java/com/example/demo
Cree una clase de controlador en el paquete llamada HelloController
:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
private final MessageSource messageSource;
@Autowired
public HelloController(MessageSource messageSource) {
this.messageSource = messageSource;
}
@GetMapping("/hello")
public String hello(Model model) {
String greeting = messageSource.getMessage("greeting.message", null, LocaleContextHolder.getLocale());
model.addAttribute("greeting", greeting);
return "hello";
}
}
En el código anterior, creamos uno HelloController
al que se le inyecta MessageSource
el texto utilizado para obtener la localización. En hello
el método que utilizamos messageSource.getMessage()
para recibir el mensaje y agregarlo al modelo.
Crear una plantilla de Thymeleaf
En src/main/resources/templates
el directorio, cree una hello.html
plantilla de Thymeleaf llamada:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello Spring MVC</title>
</head>
<body>
<h1 th:text="${greeting}"></h1>
</body>
</html>
En la plantilla anterior, usamos th:text
las propiedades de Thymeleaf para representar texto.
Ejecutar aplicación
Ahora puedes ejecutar la aplicación.
programa. Utilice el comando Maven:
mvn spring-boot:run
Su aplicación Spring MVC se iniciará y ejecutará en el puerto predeterminado (generalmente 8080).
Visita la página de internacionalización
Accede a él usando un navegador http://localhost:8080/hello
y verás una página que dice "¡Hola, mundo!" o "¡Bonjour, le Monde!", según el idioma preferido de la configuración de tu navegador.
Resumir
Este artículo explica cómo manejar las necesidades de internacionalización y localización en Spring MVC. Spring MVC proporciona un amplio soporte, que incluye archivos de recursos, analizadores de internacionalización, fuentes de mensajes y bibliotecas de etiquetas, lo que permite a los desarrolladores crear fácilmente aplicaciones multilingües.
Lo anterior es un ejemplo simple que demuestra cómo manejar la internacionalización y localización en Spring MVC. En aplicaciones reales, puede crear más archivos de recursos y ajustar configuraciones y plantillas según sus necesidades. Espero que este artículo le resulte útil y le brinde una mejor comprensión del procesamiento de internacionalización y localización en Spring MVC.