struts2的國際化(即實現網站整體中英文切換)例項
推薦一個專注於Java的小眾技術社群:Java之音
環境要求:Struts2框架環境搭建成功
為了實現程式的國際化,必須先提供程式所需要的資原始檔。資原始檔的內容基本是key-value對,其中key是程式使用的部分,而value是程式的顯示部分。
資原始檔的命名可以是如下3種形式:
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是資原始檔的基本名稱,使用者可自由定義,而language和country是不變的,必須是Java所支援的語言和國家。(用到哪個國家語言資源可查官方文件)
Java不可能支援所有的國家和語言,可以通過Locale類的getAvailableLocale方法獲取支援的,該方法返回一個Locale陣列,該陣列中包含了所有支援的國家和語言。
建立資原始檔:
globalMessages_en_US.properties(英文)
globalMessages_zh_CN.properties(中文)
編寫jsp頁面,在這個jsp上測試中英文切換效果:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title></title> </head> <body> <s:i18n name="globalMessages"> <s:text name="check"></s:text>: <a href="login.action?request_locale=zh_CN"><s:text name="chinese"></s:text></a> <a href="login.action?request_locale=en_US"><s:text name="english"></s:text></a> <br/> <h3><s:text name="title"></s:text></h3> <s:form action="login" method="post"> <table width="344" height="300"> <tr> <td> </td> </tr> <tr> <td><s:text name="username" /> <td><s:textfield name="name" /> </td> </tr> <tr> <td><s:text name="password" /> </td> <td><s:password name="password" /> </td> </tr> <tr> <td> </td> <td><s:submit value="%{getText('login')}" /></td> </tr> </table> </s:form> </s:i18n> </body> </html>
這裡有一個i18n,他就是Internationalization(國際化)的英文縮寫,為什麼是i18n呢?
Internationalization去掉頭尾的i和n剛好還剩下18個字元,漲姿勢了,原來還可以這樣命名
編寫action:
import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private static final long serialVersionUID = 8153220869598441387L; @Override public String execute() throws Exception { return SUCCESS; } }
這裡測試中英文切換,就不做登入處理了,直接登入成功。
配置攔截器,在進入action之前進行語言選擇的處理
public class CheckInterceptor extends AbstractInterceptor{
private static final long serialVersionUID = -1112495747942034188L;
@Override
public String intercept(ActionInvocation ai) throws Exception {
ActionContext ac = ai.getInvocationContext();
Map session = ac.getSession();
Locale locale = (Locale)session.get("WW_TRANS_I18N_LOCALE");
if(locale==null){
locale = new Locale("zh","CN");
session.put("WW_TRANS_I18N_LOCALE",locale);
}
return ai.invoke();
}
}
在struts2中,提供了一個i18n的攔截器,這個攔截器在執行Action方法之前,自動查詢請求中名為request_locale的引數,攔截後轉換為Locale物件,放置在使用者session的名為“WW_TRANS_I18N_LOCALE”的屬性。I18n在程式執行時會被自動載入,我們可以利用這些來設定允許使用者自動選擇網頁的語言。
在struts.xml中配置攔截器和國際化的資源:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.costom.i18n.resources" value="globalMessages"/>
<package name="default" extends="struts-default" namespace="/">
<interceptors>
<interceptor name="myInter" class="org.locale.action.CheckInterceptor"></interceptor>
</interceptors>
<action name="login" class="org.locale.action.LoginAction">
<result name="success">/index.jsp</result>
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myInter"></interceptor-ref>
</action>
</package>
</struts>
最後看看執行結果:
選擇語言為中文:
選擇語言為英文:
我們可以看到,已經成功實現了中英文切換,不同語言的切換隻需要提供不同國家的語言資原始檔即可。
相關推薦
struts2的國際化(即實現網站整體中英文切換)例項
推薦一個專注於Java的小眾技術社群:Java之音 環境要求:Struts2框架環境搭建成功 為了實現程式的國際化,必須先提供程式所需要的資原始檔。資原始檔的內容基本是key-value對,其中key是程式使用的部分,而value是程式的顯示部分。 資原始檔的
struts2的國際化(實現網站整體中英文切換)
環境要求:Struts2框架環境搭建成功 1.在src下建立資原始檔.其中baseName是資原始檔的基本名稱,使用者可自由定義,而language和country是不變的,必須是Java所支援的語言和國家。(用到哪個國家語言資源可查官方文件)示例如下: 2.
struts2的國際化(即實現中英文切換)例項
今天學習了國際化例項,也就是實現中文和英文的切換。 注:本部落格有部分程式碼參考阿木俠的部落格內容。 1、首先實現國際化對我們的專案要求是搭建好Struts2框架 2、我們要編寫jsp頁面在這個jsp頁面上測試結果 下面附上建立的login.jsp的程式碼:
Struts2 國際化(實現在頁面中調換中文英文兩個模式)
在原本搭建的Struts上進行新增程式碼頁面(詳情見本人第一篇文章) 建立資原始檔 package com.hnpi.blue; public class ChangeLanguageAction { public String execute(){
struts2的國際化(中英文切換)
國際化Internationalization的首末字元I和N之間字元數是18,簡稱I18N。 “國際化”是指一個應用程式在執行時,能夠根據客戶端請求所來自國家或地區語言的不同,而顯示不同的語言介面。 要求:Struts2框架搭建成功。 1. 專案截圖 2.建立資
利用Intellij+MAVEN+SpringMVC+URI.js實現頁面的中英文切換(國際化)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P
gridview無數據源實現更新數據庫(即斷開更新數據庫)
led databind tro bin def sin controls bpa grid 原文發布時間為:2008-08-01 —— 來源於本人的百度文章 [由搬家工具導入]using System;using System.Data;using System.Conf
【vue 進階指南 一】多語言國際化(中英文切換)
vue + element-ui + vue-i18n 多語言國際化 1.element-ui 並不支援最新版的vue-i8n 外掛,開發時注意i18n的版本,當然本示例成功解決版本不相容的問題,詳細說明請看element官方文件:http://eleme
多語言網站(如何實現網站的多語言版本?)
多語言網站,顧名思義就是能夠以多種語言(而不是單種語言)為使用者提供資訊服務,讓使用不同語言的使用者都能夠從同個網站獲得內容相同的資訊。多語言網站實現方案 1,靜態:就是為每種語言分別準備一套頁面檔案,要麼通過檔案字尾名來區分不同語言,要麼通過子目錄來區分不同語言。例如對於首頁檔案index_en.htm提
QT in VS 多語言實現(中英文切換)
最近專案需要軟體具有中英文雙語切換功能,而QT又自帶此功能,現將實現方式記錄下來。 說到中英文切換,少不了要了解QT的內部編碼方式。在此就不詳述QT編碼方式了,具體可參考 徹底弄懂Qt的編碼。只需要記住QT採用utf-8編碼!window作業系統採用ansi編
text-stroke實現文字描邊(鏤空)、text-fill-color實現文字填充&漸變(+animation實現流光字體)
stroke 顏色 width mas key ani kit mat idt text-stroke:<‘ text-stroke-width ‘> || <‘ text-stroke-color ‘>(text-stroke-width:設置或檢
鏈表的操作(自己實現的-c語言版)
自己實現 main clas 一個 class node ret scan bsp 描述:pass #include<stdio.h> #include <stdlib.h> typedef struct _node{ int v
什麽情況下需要檢測預裝Win8/8.1電腦內置激活密鑰(即Win8/8.1 OEM key)?
http bio mem 程序 rdquo dsa 新版 oem title 1、針對預裝在品牌機中的Win8操作系統,因使用了某些軟件或自己操作不當導致系統激活Key被替換而激活失效時,你需要找到內置在電腦中的OEM key,重新輸入OEM key來激活系統。 2、針對
資料結構與演算法JavaScript描述讀書筆記(js實現連結串列-單鏈表)
單鏈表 //建立建構函式建立節點 function Node(element){ this.element = element; this.next = null; } //連結串列的建構函式 function LList(){ this.head = new Node
資料結構3--棧(java實現棧的順序儲存)
1.棧 棧也叫堆疊,是一種限制只能在某一端進行插入和刪除操作的線性表  
DZ先生怪談國標之215 and 216(即業務分組和虛擬組織)
自述: 我記得在我還不懂什麼是國標的時候,我只是知道那是一串數字,有標識性的,後來因為工作需要對國標開始有了深入的瞭解。但是在這個業務分組和虛擬組織,即常說的215 and 216這塊我還不是很熟悉,初知這塊還是因為和X康對接,X康得貌貌先生曾為我闡述過這塊,只是當時覺得還是有問題,理解不了
如何在eclipse的配置檔案裡指定jdk路徑(即配置啟動eclipse的JDK)
如何在eclipse的配置檔案裡指定jdk路徑(即配置啟動eclipse的JDK) 2017年01月25日 03:26:08 閱讀數:21751 標籤: eclipsejdk 更多 個人分類: eclipse 版權宣告:
jquery load()方法實現區域性重新整理,多張網頁切換(li標籤實現上下頁的切換)
---學習借鑑中--- (1)父頁面插入的位置 <div id="content" > //id為要重新整理顯示的子頁面的內容 </div> (2)父頁面顯示標籤切換不同html頁面 <ul class="userMenu"> <li
ThreadLocal詳解,附帶例項(threadlocal實現銀行轉賬事務管理)
一.前言 在很早之前接觸到ThreadLocal很不瞭解一件事情,就是執行緒用來處理多執行緒情景,那為什麼要用threadlocal來再為每個執行緒分發一個單獨的變數副本,是否違背多執行緒的實際存在意義,而且threadlocal是否能用同步代替? 其實
spring boot支援vue history mode(即增加對404的處理)
原本的問題是這樣的,用大前端(Vue全家桶),靜態檔案直接放在Spring Boot的static資料夾裡,啟動後,假設訪問http://localhost/page1/page1_1,如果直接點瀏覽器