Thứ Hai, 30 tháng 12, 2013

i18n trong Spring MVC

Trong bài này ta sẽ xây dựng website đa ngôn ngữ i18n (Internationalization)
Cấu trúc thư mục sẽ như sau:

trong thư mục /WEB-INF/i18n ta sẽ tạo 2 file properties application.properties và application_vi.properties lưu trữ các label cho ngôn ngữ mặc định  và ngôn ngữ tiếng việt ( ngôn ngữ mặc định đây là tùy chọn, cấu hình trong servlet-context.xml)
file application_vi.properties
file application.properties

và sửa lại view để hỗ trợ hiển thị theo ngôn ngữ tùy chọn
createProduct.jsp
listProduct.jsp

ở đây ta dùng <spring:message code="application.name" /> được hỗ trợ bởi spring, khai báo taglib là <%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> để lấy message theo code được khai báo trong properties
Bây giờ sẽ cấu hình để ứng dụng có thể load các label theo key mà ta đã định nghĩa trong file properties
mở file config: /WEB-INF/spring/appServlet/servlet-context.xml
thêm vào đoạn sau:
 
 
  
 
 
 
  
 
 
  
  
 
 

bean localeChangeInterceptor sẽ xử lý yêu cầu về load resource theo ngôn ngữ được lựa chọn, dựa vào parameter là "lang"
bean localeResolver sẽ lưu ngôn ngữ hiện tại vào cookie của trình duyệt, ngôn ngữ mặc định đây là "en" (tùy chọn)
và bean messageSource sẽ load file properties được định nghĩa trong WEB-INF/i18n/, các file được load là application*.properties.
sau khi Run As project
vào theo các url sau để xem kết quả
http://localhost:8080/store/product/create?lang=en
http://localhost:8080/store/product/create?lang=vi
source code
https://www.mediafire.com/?skzzpktm4c5pmwm
Thks & rgds!

Không có nhận xét nào:

Đăng nhận xét