在Struts1.X 中通过页面设置国际化语言:http://wing123.iteye.com/admin/blogs/384112
- <body>
-
<s:a href="/Struts2/changeLang.action?lang=en">English</s:a>
-
<s:a href="/Struts2/changeLang.action?lang=zh">中文</s:a>
- <center>
-
<s:text name="addUser"/>
- </center>
- </body>
<body>
<s:a href="/Struts2/changeLang.action?lang=en">English</s:a>
<s:a href="/Struts2/changeLang.action?lang=zh">中文</s:a>
<center>
<s:text name="addUser"/>
</center>
</body>
struts.xml
- <struts>
-
-
<constant name="struts.custom.i18n.resources" value="message"/>
-
-
<constant name="struts.i18n.encoding" value="gbk"/>
-
-
<package name="Struts2" extends="struts-default">
-
-
<action name="changeLang" class="com.bjsxt.action.ChangeLangAction">
-
<result name="success">/register2/register.jsp</result>
-
</action>
-
-
</package>
-
</struts>
<struts>
<!-- 设置全局配置文件 -->
<constant name="struts.custom.i18n.resources" value="message"/>
<!-- 解决中文乱码 -->
<constant name="struts.i18n.encoding" value="gbk"/>
<package name="Struts2" extends="struts-default">
<action name="changeLang" class="com.bjsxt.action.ChangeLangAction">
<result name="success">/register2/register.jsp</result>
</action>
</package>
</struts>
message_en_US.properties
addUser=Add User
message_ zh _CN.properties
- addUser=\u6DFB\u52A0\u7528\u6237
addUser=\u6DFB\u52A0\u7528\u6237
ChangeLangAction
- public class ChangeLangAction extends ActionSupport{
-
private String lang;
-
-
public String getLang() {
-
return lang;
- }
-
-
public void setLang(String lang) {
-
this.lang = lang;
- }
-
-
@Override
-
public String execute() throws Exception {
- changeLang();
-
return SUCCESS;
- }
-
-
-
-
-
private void changeLang() {
- Locale currentLocale = Locale.getDefault();
-
-
if("en".equals(getLang().trim())) {
-
currentLocale = new Locale("en","US");
-
}else if("zh".equals(getLang().trim())) {
-
currentLocale = new Locale("zh","CN");
- }
-
-
-
-
-
-
-
-
-
-
-
- ActionContext.getContext().setLocale(currentLocale);
- ServletActionContext.getRequest().getSession().setAttribute(
-
"WW_TRANS_I18N_LOCALE", currentLocale);
- }
- }
public class ChangeLangAction extends ActionSupport{
private String lang;
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
@Override
public String execute() throws Exception {
changeLang();
return SUCCESS;
}
/**
* 手动改变Locale
*/
private void changeLang() {
Locale currentLocale = Locale.getDefault();
//1、根据页面请求,创建下同的Locale对象
if("en".equals(getLang().trim())) {
currentLocale = new Locale("en","US");
}else if("zh".equals(getLang().trim())) {
currentLocale = new Locale("zh","CN");
}
/*
* 2、设置Action中的Locale
* 前台页面的Locale和后台session中的Locale范围是不一样的
* a)只改页面Locale当前页面信息会改变但提交后Locale又会改回到默认的
* b)改变了后台Locale,当前线程中的页面Locale并不会改变,但会随下一次提交
* Action一同改变,所以可能要刷新页面两次,第一次只变后台Locale,第二次
* 前台和后台同时改变
*
* 为避免上述情况,需要前台和后台的Locale一起改变
*/
ActionContext.getContext().setLocale(currentLocale);
ServletActionContext.getRequest().getSession().setAttribute(
"WW_TRANS_I18N_LOCALE", currentLocale);
}
}
看提供的例子很重要:
运行例子struts2-blank-2.0.9
http://localhost:8080/struts2-blank-2.0.9/example/HelloWorld.action?request_locale=en有效。
原来在Struts 2.0中,通过ActionContext.getContext().setLocale(Locale arg)可以设置用户的默认语言。
Struts 2.0为您提供了一个名i18n的拦截器(Interceptor),并在默认情况下将其注册到拦截器链(Interceptor chain)中。
它的原理为在执行Action方法前,i18n拦截器查找请求中的一个名为"request_locale"的参数。
如果其存在,拦截器就将其作为参数实例化Locale对象,并将其设为用户默认的区域(Locale),最后,将此Locale对象保存在session的名为“WW_TRANS_I18N_LOCALE”的属性中。
除此之外,i18n拦截器还会将上面生成的Locale对象保存在用户Session的名为WW_TRANS_I18N_LOCALE的属性中。一旦用户Session中存在一个名为
WW_TRANS_I18N_LOCALE的属性,则该属性指定的Locale将会作为浏览者的默认Locale。
Struts1.X 与 Struts2.X 的区别 :
1、Struts1.X 通过在HttpSession中设置固定的变量实现
2、Struts2.X 比较方便,只需设置Action中的Locale
分享到:
相关推荐
3. `favicon.ico`:网站的图标,显示在浏览器的地址栏或收藏夹中,增强品牌识别度。 4. `sql.txt`:可能包含了数据库的初始化脚本,用于设置和填充数据库结构和初始数据。 5. `readme.txt`:一般包含项目说明、...
- `favicon.ico`:网站的图标,显示在浏览器地址栏和收藏夹中,是品牌形象的一部分。 - `admin.php`:后台管理入口,用于管理员对网站进行设置、内容管理等操作。 - `search.php`:搜索引擎功能的实现,允许用户在...
实际的LebiShop_v6.0.00 包含的具体组件和功能可能有所不同,但根据标题和描述,我们可以推断出这是一个功能全面、多语言支持的电商解决方案,对于希望全球化发展的商家来说,无疑是一个值得考虑的工具。
7. **多语言支持**:除了中文界面,F1book还支持其他多种语言,满足国际化的使用需求。 **三、安装与启动** 1. 下载安装:用户可以从官方网站或者通过提供的www.delphifans.com.nfo链接获取最新版本的F1book安装包...
1. **多语言支持**:虽然本实例是GBK编码,但ECShop原生支持多语言,方便进行国际化部署。 2. **模板引擎**:ECShop采用自定义模板机制,允许商家根据需求自定义商店外观,提供了丰富的主题和布局选项。 3. **商品...
ASP.NET应用程序可以使用资源文件来存储文本,这样可以方便地切换不同语言的网站内容,对于国际化的花店网站尤其重要。 7. **instructions.txt**:这可能是一个文本文件,包含关于如何部署或运行该项目的说明。...
19. **Internet Explorer收藏夹**:收藏夹保存的是网页的URL地址,而非网页内容本身。 20. **Windows资源管理器**:资源管理器图标可以通过设置显示在桌面上,但不是默认出现在桌面的。 这些知识点涉及到Excel操作...
19. **浏览器收藏夹**:在Internet Explorer中,收藏夹收藏的是网页的URL,方便用户快速访问常用网站。 20. **Windows桌面图标**:“资源管理器”图标可以通过设置显示在桌面上,但默认并不一定会出现在桌面上。 ...
7. **多语言支持**:可以创建多语言的CHM文件,满足国际化需求。 8. **预览功能**:在生成CHM文件之前,用户可以实时预览最终效果,确保满足预期。 9. **发布选项**:一键生成CHM文件,方便分发和共享。 在实际使用...
7. **国际化与本地化**:根据用户设备的设置显示相应的语言内容。 在实际的压缩包文件"TaoBao-Mine"中,可能包含了项目的源代码文件、资源文件(如图片、字体)、故事板(Storyboard)和XIB文件,这些文件共同构建...
- **多语言支持**:内置多语言包,方便国际化部署。 对于希望进一步定制化服务的企业或个人开发者来说,“源码商城”提供了完善的API文档和代码注释,便于进行二次开发或增加新功能。 #### 五、总结 综上所述,...
双语功能则进一步扩大了服务范围,能够同时服务于中文和英文用户,提升网站的国际化水平。 【标签】"thinkphp响应式口罩防护用" 概括了模板的主要技术栈和应用领域。ThinkPHP是一个流行的PHP开发框架,以其简洁的...
- `favicon.ico`:网站的图标,显示在浏览器地址栏和收藏夹中,增加网站识别度。 - `index`:可能是一个PHP脚本,作为网站的入口文件,负责处理请求和展示内容。 - `readme.ini`:一般包含项目的基本介绍、安装...
4. `user_clips.dwt`:用户收藏夹模板,让用户能够方便地管理他们感兴趣的商品。这一功能有助于增加用户粘性,促进复购。 5. `goods.dwt`:商品详情页模板,展示商品图片、描述、价格、评价等信息,是决定用户是否...
UTF8是国际通用的多语言字符编码,适用于全球范围内的网站,确保ECShop可以支持各国语言,满足跨国电商的需求。 3. **docs文件夹** "docs"文件夹通常包含软件的文档资料,如用户手册、开发者指南、API参考等。...
3. **中英文网店系统**:该系统支持中文和英文两种语言,这意味着它包含两种语言版本的界面和后台管理,能够满足不同国家和地区用户的语言需求,有利于拓展国际市场的业务。 4. **商品管理**:网店系统通常包含商品...
【标题】"免授权gouagou1元夺宝源码带...如果要实现多语言版本,还需要熟悉i18n(国际化)技术,对源码进行适当调整。同时,安全问题不容忽视,需要检查代码中是否存在SQL注入、XSS攻击等风险,并加强服务器安全设置。
- `favicon.ico`: 网站的图标,显示在浏览器的地址栏和收藏夹中。 - `api.php`: 可能是用来处理API请求的文件,如数据接口。 - `admin.php`: 后台管理入口文件,用于登录和管理网站内容。 - `index.php`: 网站的...
14. 收藏夹功能:IE浏览器的收藏夹保存的是网页的链接,方便用户快速访问。 15. CSS布局:在HTML中,div元素常用于构建页面布局。 16. Java字符串操作:String对象是不可变的,所以B选项s = s + 100;创建了一个新...