<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Spring MVC 國際化(i18n)和本地化(i10n)示例 > 原文: [https://howtodoinjava.com/spring-mvc/spring-mvc-internationalization-i18n-and-localization-i10n-example/](https://howtodoinjava.com/spring-mvc/spring-mvc-internationalization-i18n-and-localization-i10n-example/) 國際化是設計軟件應用程序的過程,這樣它可以潛在地適應各種語言和地區而無需進行工程更改。 本地化是通過添加特定于語言環境的組件并翻原文本來使國際化軟件適應特定區域或語言的過程([Wiki](https://en.wikipedia.org/wiki/Internationalization_and_localization))。 Spring 框架隨[`LocaleResolver`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/LocaleResolver.html)一起提供,以支持國際化和本地化。 本教程將幫助您學習**如何在基于 Spring MVC 的 Web 應用程序**中添加國際化支持。 ```java 目錄 1)添加特定于語言環境的消息資源 2)在 Spring 上下文中添加 LocaleResolver 配置 3)更改 JSP 以顯示特定于語言環境的消息 4)項目結構 5)測試應用程序 6)其他項目文件 ``` 讓我們開始分析為在 Spring Web 應用程序中添加 i18n 支持而需要進行的更改。 ## 1)添加特定于語言環境的消息資源 如果要支持多個語言環境,那么第一步顯然就是讓每個特定于語言環境的屬性文件都具有該語言環境特定語言的文本。 在我們的示例中,我支持兩種語言環境。 第一個是使用英語的美國語言,第二個是中文。 `messages.properties` ```java lbl.Id=Employee Id lbl.firstName=First Name lbl.lastName=First Name lbl.page=All Employees in System ``` `messages_zh_CN.properties` ```java lbl.Id=\u5458\u5DE5ID lbl.firstName=\u540D\u5B57 lbl.lastName=\u59D3 lbl.page=\u7CFB\u7EDF\u4E2D\u7684\u6240\u6709\u5458\u5DE5 ``` 請注意這些屬性文件的命名約定。 特定于語言環境的文件的名稱后附加了語言環境短代碼。 ## 2)在 Spring 上下文中添加`LocaleResolver`配置 為了使 Spring MVC 應用程序支持國際化,您將需要注冊兩個 bean。 #### 1\. `SessionLocaleResolver` [`SessionLocaleResolver`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/i18n/SessionLocaleResolver.html) 通過檢查用戶會話中的預定義屬性來解析語言環境。 如果會話屬性不存在,則此語言環境解析器將從`accept-language` HTTP 標頭中確定默認語言環境。 ```java <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <property name="defaultLocale" value="en" /> </bean> ``` #### 2\. `LocaleChangeInterceptor` [`LocaleChangeInterceptor`](https://docs.spring.io/spring-framework/docs/2.5.6/api/org/springframework/web/servlet/i18n/LocaleChangeInterceptor.html)監聽器檢測當前 HTTP 請求中是否存在特殊參數。 可以使用此攔截器的`paramName`屬性自定義參數名稱。 如果當前請求中存在此類參數,則此攔截器會根據參數值更改用戶的語言環境。 ```java <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="lang" /> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor" /> </list> </property> </bean> ``` 該應用程序的完整應用程序上下文文件如下所示: ```java <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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context/ http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.howtodoinjava.demo" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="messages" /> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"> <property name="defaultLocale" value="en" /> </bean> <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="lang" /> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor" /> </list> </property> </bean> </beans> ``` ## 3)更改 JSP 以顯示特定于語言環境的消息 下一步是進行視圖更改,以支持顯示特定于區域設置的文本消息。 可以通過以下方式使用 Spring TLD 來完成此操作。 ```java <%@ page contentType="text/html;charset=UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <html> <head> <title>Spring MVC Hello World</title> </head> <body> <h2><spring:message code="lbl.page" text="All Employees in System" /></h2> <table border="1"> <tr> <th><spring:message code="lbl.Id" text="Employee Id" /></th> <th><spring:message code="lbl.firstName" text="First Name" /></th> <th><spring:message code="lbl.lastName" text="Last Name" /></th> </tr> <c:forEach items="${employees}" var="employee"> <tr> <td>${employee.id}</td> <td>${employee.firstName}</td> <td>${employee.lastName}</td> </tr> </c:forEach> </table> </body> </html> ``` ## 4)項目結構 此應用程序的完整結構是這樣的: ![Spring i18n project structure and files](https://img.kancloud.cn/c9/40/c940c273d29542d3ef8a7edff687cb3e_411x577.jpg) Spring i18n 項目結構和文件 ## 5)測試應用程序 **點擊網址:`http://localhost:8080/springmvcexample/employee-module/getAllEmployees`** 如您所見,所有標簽均以英語顯示。 ![Spring i18n - En Locale](https://img.kancloud.cn/6f/a8/6fa8a5113506aa10a2fc9ce934ac79d6_633x220.jpg) Spring i18n – En 語言環境 **點擊網址:`http://localhost:8080/springmvcexample/employee-module/getAllEmployees?lang=zh_CN`** 現在,語言環境已更改為中文,并且所有標簽都以中文顯示。 ![Spring i18n - CN Locale](https://img.kancloud.cn/f0/6c/f06c4e7d68b7f906ddfc22e74a007c89_691x219.jpg) Spring i18n – CN 語言環境 ## 6)其他項目文件 讓我們列出該應用程序涉及的其他文件。 `web.xml` ```java <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring Web MVC Hello World Application</display-name> <servlet> <servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` `EmployeeController.java` ```java package com.howtodoinjava.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.howtodoinjava.demo.service.EmployeeManager; @Controller @RequestMapping("/employee-module") public class EmployeeController { @Autowired EmployeeManager manager; @RequestMapping(value="/getAllEmployees", method = RequestMethod.GET) public String welcome(Model model) { model.addAttribute("employees",manager.getAllEmployees()); return "employeesListDisplay"; } } ``` `EmployeeDAO.java` ```java package com.howtodoinjava.demo.dao; import java.util.List; import com.howtodoinjava.demo.model.EmployeeVO; public interface EmployeeDAO { public List<EmployeeVO> getAllEmployees(); } ``` `EmployeeDAOImpl.java` ```java package com.howtodoinjava.demo.dao; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Repository; import com.howtodoinjava.demo.model.EmployeeVO; @Repository public class EmployeeDAOImpl implements EmployeeDAO { public List<EmployeeVO> getAllEmployees() { List<EmployeeVO> employees = new ArrayList<EmployeeVO>(); EmployeeVO vo1 = new EmployeeVO(); vo1.setId(1); vo1.setFirstName("Lokesh"); vo1.setLastName("Gupta"); employees.add(vo1); EmployeeVO vo2 = new EmployeeVO(); vo2.setId(2); vo2.setFirstName("Raj"); vo2.setLastName("Kishore"); employees.add(vo2); return employees; } } ``` `EmployeeManager.java` ```java import java.util.List; import com.howtodoinjava.demo.model.EmployeeVO; public interface EmployeeManager { public List<EmployeeVO> getAllEmployees(); } ``` `EmployeeManagerImpl.java` ```java import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.howtodoinjava.demo.dao.EmployeeDAO; import com.howtodoinjava.demo.model.EmployeeVO; @Service public class EmployeeManagerImpl implements EmployeeManager { @Autowired EmployeeDAO dao; public List<EmployeeVO> getAllEmployees() { return dao.getAllEmployees(); } } ``` `EmployeeVO.java` ```java package com.howtodoinjava.demo.model; import java.io.Serializable; public class EmployeeVO implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String firstName; private String lastName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public String toString() { return "EmployeeVO [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } } ``` 請讓我知道是否有任何疑問或想法。 **祝您學習愉快!**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看