struts学习笔记三-国际化
在程序設計領域,人們把能夠在無需改寫有關代碼的前提下,讓開發出來的應用程序能夠支持多種語言和數據格式的技術稱為國際化技術。
國際化簡稱為 i18n,根據internationalization簡化而來。
本地化簡稱為l10n,根據localization簡化而來,與國際化對應。
struts2框架從一開始就是用java內建的國際化來實現國際化。
在程序中一個特定的語言由三部分組成,語言、國家、變體,一般的系統變體會很少考慮。語言就是指漢語、英語等,國家指中國、美國、英國等,這兩部分組合起來就是一個標準語言,比如中國漢語,美國英語,英國英語,日本日語等,美國日語這種組合方式也是可以的,但是沒人會這樣做,沒有任何實際意義。程序中為各種語言和國家定義了簡稱,在國際標準ISO中,中文簡體是zh,中國是CN,暫且不考慮中國的其他語言形式。
要實現struts國際化,最主要的就是配置properties文件和struts.xml。
下面以login,username,userpassword為例,如果系統呈現中文,那么這三個字就是"登錄","用戶名","密碼",呈現美式英語就是"Login","User Name","User Password",在程序中,需要將這些信息放入一個properties文件中,分別是message_zh_CN.properties,message_en_US.properties,格式:自定義部分_語言簡寫_國家簡寫.properties。
message_zh_CN.properties
?
| login | 登錄 |
| username | 用戶名 |
| password | 密碼 |
message_en_US.properties
| login | Login |
| username | User Name |
| password | User Password |
注:打開中文properties文件源代碼會看到,編碼是字節形式存在的,因為中文是特殊字符,而java內部是使用Unicode存儲的,所以這里會發聲轉換。
在文件名命中,message是自定義的,然后再struts.xml中需要配置這些文件,在xml增加下面常量
1 <constant name="struts.custom.i18n.resources" value="message"/> 這樣就配置了兩個properties的頭部文件,置于后面部分是不用配置的,頁面顯示時會選擇一個message開頭的文件,在后面會做解釋。
在頁面使用驗證國際化效果,jsp頁面代碼:
<s:property value="${getText('login')}"/> //顯示結果為"登錄",struts通過ActionSupport類的getText方法尋找屬性文件中的login <s:text name="login"/> //顯示結果為"用戶名",相當于上一句。
<s:textfield name="username" label="${getText('username')}"/> //顯示"用戶名"
<s:textfield name="username" key="username"/> //key專門去尋找配置的屬性,
?
實現國際化Action類必須繼承ActionSupport獲得struts內建的國際化支持,通過ActionSupport的方法getText(String key)可以獲得對應的國際化信息。如果使用默認的國際化,服務器在哪里就會使用哪里的語言,在美國就會使用美國英語,在中國就會是簡體中文。
另一種常用的方式是由用戶指定,比如某網站有中英文可以選擇,點擊中文,那么將使用message_zh_CN.properties中的配置,點擊英文將啟用message_en_US.properties中的配置,這樣就能做到中英文切換,達到國際化的效果。
轉載于:https://www.cnblogs.com/CHSelf/p/3526063.html
總結
以上是生活随笔為你收集整理的struts学习笔记三-国际化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 换一个电脑显示屏要多少钱
- 下一篇: 求一个qq网名男生非主流