想测试一下国际化,如何将页面切换到英文状态

boooch 2010-12-21 11:14:17
我的项目中有message_cn 和message_en.properties文件,然后想测试一下英文的显示效果,要如何做才能显示出英文的那个版本呢?3Q~
...全文
334 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jac_cheng 2011-02-26
  • 打赏
  • 举报
回复
1.编写Aciton
public class LocalAction extends Action {

public LocalAction()
{
}
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
{
System.out.println(form);
String lang=request.getParameter("lang");
Locale locale=new Locale(lang);//一个语言版本
HttpSession session=request.getSession(true);
session.setAttribute(Globals.LOCALE_KEY,locale);//把生成的一个语言版本本地化
return mapping.findForward("dept");
}

}
2.在资源文件中定义相应的资源(利用native2acsii进行转换)
3.页面展现:
<html:html lang="true">
<head>
<title>dept.jsp</title>
</head>

<body>
<p align="right"><a href="./localAction.dd?lang=ch">中文版</a> <a href="./localAction.dd?lang=en">英文版</a> <a href="./localAction.dd?lang=ja">日文版</a></p>
<bean:message key="XXXX"/>从资源文件取得相应的信息
</body>
</html:html>







* 米小國 * 奇想世界☆.╯

Struts Gossip - Struts國際化支援

--------------------------------------------------------------------------------
caterpillar - 星期二 七月 27, 2004 7:54 pm
文章主題: Struts國際化支援
--------------------------------------------------------------------------------
Struts從一開始就支援國際化(internationallization, i18n),我們可以使用訊息資源檔案來管理國際化的訊息,就如之前所提過的,您在struts-config.xml中設定訊息資源檔的名稱與位置:
代碼:
<message-resources parameter="resources.application"/>


這樣的設定表示您將使用WEB-INF/resources目錄下以application開頭,副檔名為properties的訊息資源檔,在檔案名稱命名上您可以用語言與國別訊息來表明國際化時要使用的檔案,例如application_zh_TW.properties、application_zh_CN.properties、application_zh_HK.properties,儲存特定的字元之後,記得使用native2ascii工具程式進行轉換,轉換方法參考這邊:
http://www.caterpillar.onlyfun.net/phpBB2/viewtopic.php?t=1244

Struts預設會以所在伺服器的locale設定來決定要傳回哪一個訊息資源檔的內容給客戶端,如果客戶端是瀏覽器,則會根據所傳送的Header Accept-Language來選擇傳回的資源檔訊息,如果瀏覽器指定的Accept-Language沒有對應的資源檔案,且也沒有與伺服器的locale對應的資源檔案,則使用沒有任何的語言與國別訊息的訊息資源檔案名稱,也就是application.properties。

您可以提供application_zh_TW.properties、application_zh_CN.properties、application_zh_HK.properties、application.properties等等的檔案,依賴瀏覽器所提供的Header來選擇適當的國際化訊息,但這並不保險,例如若使用者要看中文,而它的瀏覽器預設語系是英文語系,則這個方法會使得使用者看到英文訊息。

要求使用者有能力自行更改瀏覽器的預設語系是不切實際的,並不是每個使用者都知道如何作這個設定,更好的方法是使用Struts的session中的Locale來控制,Struts預設會在每個用戶的session中放入一個Locale,預設是使用者瀏覽器所提供的語言訊息,您可以替換掉session中的這個Locale,方法之一是提供一個Action來進行轉換,例如在網頁上提供一個連結(像是「轉為簡體」,link至/ChangeLang.do這樣),按下後可進行以下的動作:
代碼:
package onlyfun.caterpillar;

import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;

public class AccountAction extends Action {
public ActionForward login(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Locale locale = new Locale("zh", "CN");
HttpSession session = request.getSession(true);
session.setAttribute(Action.LOCALE_KEY, locale);

return mapping.findForward("welcome");
}
}


我們在Action中新增一個Locale物件來替換掉session中的Locale物件,之後Struts就使用這個物件來顯示指定的訊息資源,例如application_zh_CN.properties中的訊息。
BrokenHeart0808 2010-12-21
  • 打赏
  • 举报
回复
4楼正解
Think Nothing 2010-12-21
  • 打赏
  • 举报
回复
浏览器工具->internet选项->常规->语言->添加,选择“英语[en]”将此选项移动到最上面
liuc0317 2010-12-21
  • 打赏
  • 举报
回复
你是使用的Struts2 吗!这个有完整的实现!
http://blog.csdn.net/liuc0317/archive/2010/12/01/6048552.aspx
boooch 2010-12-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 guo624587253 的回复:]
你有spring 国际化 还是struts 国际化????
[/Quote]

spring
guo624587253 2010-12-21
  • 打赏
  • 举报
回复
你有spring 国际化 还是struts 国际化????

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧