Hướng dẫn sử dụng i18n Internationalization(Quốc tế hóa) làm đa ngôn ngữ trong Spring MVC

2023-07-26 17:12:59

Hướng dẫn sử dụng i18n Internationalization(Quốc tế hóa) làm đa ngôn ngữ trong Spring MVC

Bước 1: Tạo ứng dụng Dynamic Web Project

File → New → Other → Web → Dynamic Web Project

Chú ý: Trong bước này nhớ tạo Target runtime cho nó.Next → Next → Tích chọn “Generate web.xml deployment descriptor” → Finish

Bước 2: Convert to maven project

Click phải vào project → Configure → Convert to Maven Project → Finish


Bước 4: Thêm các thư viện cho ứng dụng trong file pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>I18nSpringMVC</groupId>
  <artifactId>I18nSpringMVC</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <dependencies>
  	<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
	<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.18</version>
	</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-orm</artifactId>
	    <version>5.3.24</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/jstl/jstl -->
	<dependency>
	    <groupId>jstl</groupId>
	    <artifactId>jstl</artifactId>
	    <version>1.2</version>
	</dependency>
	
	<dependency>
	  <groupId>javax.servlet</groupId>
	  <artifactId>javax.servlet-api</artifactId>
	  <version>3.0.1</version>
	  <scope>provided</scope>
	</dependency>
  </dependencies> 
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>17</release>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
      </plugin>
    </plugins>
  </build>
</project>

Bước 5: Cấu hình file web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>I18nSpringMVC</display-name>
  <servlet>
  	<servlet-name>I18nSpringMVC</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name> 
  		<param-value>/WEB-INF/config/spring-config.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  		<servlet-name>I18nSpringMVC</servlet-name>
  		<url-pattern>/</url-pattern>
  </servlet-mapping>
  <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

Bước 6: Tạo file cấu hình spring-config.xml (WEB-INF/config/spring-config.xml)

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 

  	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context" 
	xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 

    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
    http://www.springframework.org/schema/mvc
	http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd"> 
  <context:component-scan base-package="com.mosoftvn" /> 
  <mvc:annotation-driven></mvc:annotation-driven>
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
      <value>/views/</value> 
    </property> 
    <property name="suffix"> 
      <value>.jsp</value> 
    </property> 
  </bean> 
  	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
	<property name="basename" value="com.mosoftvn.lang.Language" />
	</bean>
	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
	<property name="defaultLocale" value="vi" />
	</bean>
	<mvc:interceptors>
	<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
		<property name="paramName" value="lang" />
	</bean>
	</mvc:interceptors>
</beans>

Bước 7: Tạo class HomeController.java

package com.mosoftvn.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {

	@RequestMapping(value = {"","/home"})
	public String home() {
		
		return "home";
	}
}

Bước 8: Tạo file Language_en_US.properties:

home= HOME
about=About
language=Language
search=Search
hello=HELLO

Bước 9: Tạo file Language_vi_VN.properties:

home= Trang Ch\u1EE7
about= Gi\u1EDBi Thi\u1EC7u
language=Ngôn Ng\u1EEF
search=Tìm Ki\u1EBFm
hello=Xin Chao

Bước 10: Tạo file Language_ja_JP.properties:

home= \u5BB6
about=\u3060\u3044\u305F\u3044
language=\u8A00\u8A9E
search=\u691C\u7D22
hello=\u3053\u3093\u306B\u3061\u306F

Bước 11: Tạo trang home.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!doctype html>
<html lang="en">
  <head>
    <title>Title</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  </head>
  <body>
      <nav class="navbar navbar-expand-sm navbar-light bg-light">
        <a class="navbar-brand" href="#">MosoftVN</a>
        <button class="navbar-toggler d-lg-none" type="button" data-toggle="collapse" data-target="#collapsibleNavId" aria-controls="collapsibleNavId"
            aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="collapsibleNavId">
            <ul class="navbar-nav mr-auto mt-2 mt-lg-0">
                <li class="nav-item active">
                    <a class="nav-link" href="#"><spring:message code="home"/></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#"><spring:message code="about"/></a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="dropdownId" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><spring:message code="language"/></a>
                    <div class="dropdown-menu" aria-labelledby="dropdownId">
                        <a class="dropdown-item" href="?lang=vi_VN">Vietnamese</a>
                        <a class="dropdown-item" href="?lang=en_US">English</a>
                        <a class="dropdown-item" href="?lang=ja_JP">JAV</a>
                    </div>
                </li>
            </ul>
            <form class="form-inline my-2 my-lg-0">
                <input class="form-control mr-sm-2" type="text" placeholder="">
                <button class="btn btn-outline-success my-2 my-sm-0" type="submit"><spring:message code="search"/></button>
            </form>
        </div>
      </nav>

      <div class="jumbotron">
        <h1 class="display-3"><spring:message code="hello"/></h1>
        <p class="lead">MosoftVN</p>
        <hr class="my-2">
      </div>
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
  </body>
</html>

Cấu trúc dự án :

Chạy và có kết quả nhé :

Bài viết liên quan

Ngày đăng : 2023-08-31 08:48:49
Spring MVC Custom Validation(Hướng dẫn validate file)

Spring MVC Custom Validation- Hướng dẫn validate file multipart file, custome anotation validate, validate file không rỗng , validate định dạng file.....

Read More
Ngày đăng : 2023-07-20 17:17:45
Tải giao diện Admin LTE

Tải giao diện Admin LTE 2 bản rút gọn nhẹ làm trang quản trị cho ứng dụng web ...............

Read More
Ngày đăng : 2023-06-22 11:15:11
Hướng dẫn CRUD Spring WebMVC vs Hibernate phần 2 (Quản lý sản phẩm)

Hướng dẫn CRUD Spring WebMVC vs Hibernate phần 2 (Quản lý sản phẩm), CRUD có upload image và có quan hệ khóa ngoại

Read More
Ngày đăng : 2023-06-20 10:30:47
Hướng dẫn CRUD (Thêm sửa xóa) Spring WebMVC vs Hibernate

Hướng dẫn Thêm sửa xóa dữ liệu với spring webmvc sử dụng hibernate , trong bài viết này mình sử dụng database oracle

Read More
Ngày đăng : 2023-06-13 18:25:02
Hướng dẫn upload file trong spring webmvc

Hướng dẫn upload file trong spring webmvc sử dụng common-io, common-fileupload ...

Read More
Ngày đăng : 2023-06-13 18:15:39
Hướng dẫn validate form trong Spring WebMVC

Hướng dẫn validate form trong springMVC sử dụng javax-validate

Read More
Ngày đăng : 2023-06-08 14:57:17
Tổng quan về Spring Framework và Spring MVC

Là một framework phát triển ứng dụng phổ biến nhất cho ứng dụng doanh nghiệp trong Java Là một nền tảng Java mã nguồn mở. Được viết đầu tiên bởi Rod Johnson và được phát hành lần đầu dưới phiên bản Apache 2.0 vào tháng 6 năm 2003

Read More