1. 程式人生 > >菜鳥學Struts——I18N對國際化的支持

菜鳥學Struts——I18N對國際化的支持

mit 選擇 開發 zh-cn Language ssa view 語言 java

大家肯定都喜歡玩遊戲吧。

對於是一個遊戲迷的話,肯定玩過不少很棒的經典單機遊戲。比方說,國產的《古墓麗影》、《刺客信條》、《鬼泣》國產的仙劍。古劍等。在眾多遊戲系列中,國產的不必說了。下載破解了就能玩。

可是對於哪些,下載下來是英文的韓文的遊戲。對於電腦白癡的遊戲迷來說,第一反映是:這遊戲有沒有漢化補丁?

為什麽一些經典的遊戲能夠用漢化補丁?我們在開發程序的時候,是否也提供了相同的語言包可供選擇?

我們在開發程序的時候,前臺界面寫文本的時候,都是直接寫中文的。在對於這樣做的程序。毫無疑問,假設這個程序。要推向國際化。開發一種語言。基本就相當於把整個系統重構了。

假設是那樣的話。我們的程序推向國際化是不是成本非常大?

所以。在開發系統之前。一般都會考慮系統的使用人群。假設該系統僅僅打算開發一種語言的話。那自然就不用考慮語言的版本號問題了。假設開發的程序或遊戲。覺得能夠有發展的空間。

我們就能夠在程序中增加對國際化的支持了。

初學Struts。假設有不正確的地方。還請不吝賜教。

接下來,我將用一個小樣例。談一談我對語言包的理解。

我們所說的中文補丁就是一個語言包。

傳統的程序開發:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<form action="login.do" method="post">
	用戶:<input type="text" name="username"><br>
	密碼:<input type="text" name="password"><br>
	<input type="submit" value="登錄"/>"><br>
	</form>
</body>
</html>

登錄頁面:

技術分享圖片

對於上述的頁面中有一部分代碼是 寫死的中文。

假設要支持國際化,就要開發語言包 名字叫 ——國際化資源文件。

說通俗點,就是開發一組字典。把界面上的顯示文字的地方替換掉。語言包就是一組字典。

改動後的登錄界面:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
	<form action="login.do" method="post">
	<bean:message key="form.field.username"/>:<input type="text" name="username"><br>
	<bean:message key="form.field.password"/>:<input type="text" name="password"><br>
	<input type="submit" value="<bean:message key="form.button.login"/>"><br>
	</form>
</body>
</html>

界面上沒有文本。僅僅有一些變量……

文本的位置全都用變量替換掉。

這樣僅僅要是顯示界面的文本,都是可控制的。僅僅須要替換一個語言包。就能夠了。

如今替換一個語言包。效果如圖:

技術分享圖片

接下來。我們看一下這神奇的“語言包”是什麽東西。

技術分享圖片

對於程序的開發。假設要支持國際化。

在開發的過程中。可能會不太舒服。

由於開發前臺的人員,看不到熟悉的程序,而是一大堆變量。

當然也能夠,先開發出一個語言的程序來。

然後在進行替換。對於多種語言的開發。也就是多了一個翻譯的過程,也沒什麽神奇的。

菜鳥學Struts——I18N對國際化的支持