1. Trang chủ
  2. » Thể loại khác

da ngon ngu i18n trong struts 2

7 145 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 336,46 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đa ngôn ngữ i18n trong Struts 2 Internationalization i18n là tiến trình triển khai các sản phẩm và dịch vụ để chúng thích nghi với locale và culture cụ thể.. Giới thiệu i18n Interceptor

Trang 1

Đa ngôn ngữ (i18n) trong Struts 2

Internationalization (i18n) là tiến trình triển khai các sản phẩm và dịch vụ để chúng thích nghi với locale và culture cụ thể Internationalization được viết tắt thành i18n vì từ này bắt đầu với chữ i, kết thúc với chữ n và ở giữa có 18 chữ Struts 2 hỗ trợ i18n thông qua resource bunble, interceptor và các tab library

Giới thiệu i18n Interceptor

i18n Interceptor cung cấp hỗ trợ đa ngôn ngữ cho ứng dụng của bạn Nó được tìm thấy trong defaultStack, do đó bạn không cần xác định nó một cách tường minh i18n Interceptor có các tham

số sau:

Ten_tham_so: xác định tên của tham số HTTP request Theo mặc định, nó được thiết lập

là request_locale

Ten_thuoc_tinh: xác định tên của session key để lưu trữ locale Theo mặc định, nó là

WW_TRANS_I18N_LOCALE

Giới thiệu global.properties file

Để phát triển ứng dụng của bạn trong nhiều ngôn ngữ, bạn cần phải duy trì nhiều property file tương ứng với các language/locale đó và định nghĩa nội dung theo cách là các cặp key/value Ví

dụ, nếu bạn muốn phát triển ứng dụng cho US (mặc định), Tây Ba Nha và Pháp thì bạn phải tạo 3 properties file Trong chương này chúng tôi chỉ sử dụng global.properties, và tất nhiên bạn cũng có thể sử dụng nhiều property file khác nhau để tách riêng các kiểu thông điệp khác nhau

global.properties: thiết lập mặc định cho US

global_fr.properties: được sử dụng cho Franch locale

global_es.properties: được sử dụng cho Spanish locale

Truy cập các Message Resource

Có nhiều cách khác nhau để truy cập các Message Resource, bao gồm getText, text tag, thuộc tính key của UI tags, và i18n tag Sau đây chúng ta giới thiệu ngắn gọn chúng:

Để hiển thị i18n text, sử dụng lời gọi tới getText trong thẻ property, hoặc bất kỳ thẻ khác như UI

tags, như sau:

Trang 2

<s:property value = "getText('some.key')" />

Thẻ text lấy một thông điệp từ resource bundle mặc định:

<s:text name = "some.key" />

Thẻ i18n đẩy một resource bundle lên trên cùng của Value Stack Các thẻ khác bên trong phạm vi

của thẻ i18n có thể hiển thị các thông điệp từ resource bundle đó:

<s:i18n name = "some.package.bundle" >

<s:text name = "some.key" />

</s:i18n>

Thuộc tính key của hầu hết các UI tags có thể được sử dụng để thu nhận một thông điệp từ một

resource bundle

<s:textfield key = "some.key" name = "textfieldName" />

Ví dụ i18n trong Struts 2

Mục tiêu của chúng ta là tạo trang index.jsp có thể hiển thị trong nhiều ngôn ngữ Bây giờ file này

được viết như sau:

<%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"

pageEncoding = "ISO-8859-1" %>

<%@ taglib prefix = "s" uri = "/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title> Employee Form ho tro Da ngon ngu </title>

</head>

<body>

<h1><s:text name = "global.heading" /></h1>

<s:url id = "indexEN" namespace = "/" action = "locale"

<s:param name = "request_locale" en </s:param>

Trang 3

</s:url>

<s:url id = "indexES" namespace = "/" action = "locale"

<s:param name = "request_locale" es </s:param>

</s:url>

<s:url id = "indexFR" namespace = "/" action = "locale"

<s:param name = "request_locale" fr </s:param>

</s:url>

<s:a href = "%{indexEN}" English </s:a>

<s:a href = "%{indexES}" Spanish </s:a>

<s:a href = "%{indexFR}" France </s:a>

<s:form action = "empinfo" method = "post" namespace = "/" >

<s:textfield name = "name" key = "global.name" size = "20" />

<s:textfield name = "age" key = "global.age" size = "20" />

<s:submit name = "submit" key = "global.submit" />

</s:form>

</body>

</html>

Chúng ta sẽ tạo success.jsp mà sẽ được triệu hồi khi action đã định nghĩa là SUCCESS

<%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"

pageEncoding = "ISO-8859-1" %>

<%@ taglib prefix = "s" uri = "/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title> Success </title>

</head>

<body>

<s:property value = "getText('global.success')" />

Trang 4

</html>

Tiếp theo chúng ta cần tạo hai action như sau Một action là cho Locale và hiển thị cùng index.jsp file trong các ngôn ngữ khác nhau Một action khác để đệ trình form cho chính nó Cả hai action này đều trả về SUCCESS, nhưng chúng ta sẽ nhận các action khác nhau dựa trên các giá trị trả

về

Action đầu tiên cho Locale:

package com vietjack struts2 ;

import com opensymphony xwork2 ActionSupport ;

public class Locale extends ActionSupport {

public String execute ()

{

return SUCCESS ;

}

}

Action thứ hai để đệ trình form cho chính nó:

package com vietjack struts2 ;

import com opensymphony xwork2 ActionSupport ;

public class Employee extends ActionSupport {

private String name ;

private int age ;

public String execute ()

{

return SUCCESS ;

}

Trang 5

public String getName ()

return name ;

}

public void setName ( String name ) {

this name = name ;

}

public int getAge ()

return age ;

}

public void setAge ( int age ) {

this age = age ;

}

}

Bây giờ chúng ta tạo ba global.properties file và đặt trong CLASSPATH:

global.properties

global name = Name

global age = Age

global submit = Submit

global heading = Select Locale

global success = Successfully authenticated

global_fr.properties

global name = Nom d 'utilisateur

global.age = l' â ge

global submit = Soumettre des

global heading = S é lectionnez Local

global success = Authentifi avec succ è s

global_es.properties

global name = Nombre de usuario

global age = Edad

global submit = Presentar

global heading = seleccionar la configuracion regional

Trang 6

global success = Autenticado correctamente

Tiếp theo, chúng ta sẽ tạo struts.xml với hai action trên như sau:

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

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name = "struts.devMode" value = "true" />

<constant name = "struts.custom.i18n.resources" value = "global" />

<package name = "helloworld" extends = "struts-default" namespace = "/" >

<action name = "empinfo"

class = "com.vietjack.struts2.Employee"

method = "execute" >

<result name = "input" > /index.jsp </result>

<result name = "success" > /success.jsp </result>

</action>

<action name = "locale"

class = "com.vietjack.struts2.Locale"

method = "execute" >

<result name = "success" > /index.jsp </result>

</action>

</package>

</struts>

Và nội dung của web.xml là:

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

<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

xmlns = "http://java.sun.com/xml/ns/javaee"

Trang 7

xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

id = "WebApp_ID" version = "3.0" >

<display-name> Struts 2 </display-name>

<welcome-file-list>

<welcome-file> index.jsp </welcome-file>

</welcome-file-list>

<filter>

<filter-name> struts2 </filter-name>

<filter-class>

org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

</filter>

<filter-mapping>

<filter-name> struts2 </filter-name>

<url-pattern> /* </url-pattern>

</filter-mapping>

</web-app>

Cuối cùng, bạn chạy thử ứng dụng trên Theo mặc định nó sẽ hiển thị ngôn ngữ US, bạn có thể lựa chọn bất kỳ ngôn ngữ nào khác với Spanish hoặc France, khi bạn lựa trọn một trong số chúng thì ngôn ngữ tương ứng sẽ được áp dụng cho ứng dụng

Ngày đăng: 02/12/2017, 21:06

TỪ KHÓA LIÊN QUAN