JAVA 初学 i18n 国际化
来源:互联网 发布:稻谷出糙率计算数据 编辑:程序博客网 时间:2024/04/30 18:40
internationalization ==> i18n ,i后18个字母n
一般应用于开发多语言系统环境中的,后台日志、控制台打印的信息、前后台页面、js提示信息等
获取当前系统默认语言:
strus2:
ServletActionContext.getRequest().getLocale();
jsp:
out.print(request.getLocale());
通常采用xxxx.properties 文件来配置,如:
app_zh_CN.properties、app_en_US.properties
两个properties配置示例:
app_zh_CN.properties为中文配置
login_page_userName=用户名login_page_password=密码login_page_loginBtnText=登录
app_en_US.properties为英文配置
login_page_userName=userNamelogin_page_password=passwordlogin_page_loginBtnText=login
在struts.xml中添加配置:
<!-- 国际化 --> <constant name="struts.custom.i18n.resources" value="app"></constant>
注意这个value=’app’,这个app就是国际化配置文件的前缀。struts会根据这个前缀去自动匹配。
在后台中使用,如:
/** * */package com.yz.action;import javax.servlet.ServletContext;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;import com.opensymphony.xwork2.ActionSupport;/** * @author zhong * */public class LoginAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware { /** 描述 (@author: yuanzhong) */ private static final long serialVersionUID = 1L; private String userName; private String password; private ServletContext servletContext; private HttpServletRequest servletRequest; private HttpServletResponse servletResponse; public String execute(){ System.out.println("=============execute============"); userName = "ADMIN_execute"; String name = this.getText("login_page_password"); System.out.println("i18n 测试: "+name); return "success"; } public String login(){ System.out.println("===========login=============="); userName = "ADMIN_login"; Cookie cookie = new Cookie("loginUser", "ndxfke"); cookie.setMaxAge(24*60*60); //以秒为单位 servletResponse.addCookie(cookie); servletRequest.getSession().setAttribute("login_user", "ndxfle"); return "success"; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } @Override public void setServletResponse(HttpServletResponse servletResponse) { this.servletResponse = servletResponse; } @Override public void setServletRequest(HttpServletRequest servletRequest) { this.servletRequest = servletRequest; }}
这里需求说明的时,在action中使用时,需要继承ActionSupport,以便使用该对象中的‘getText()’方法。
如此段代码:
String name = this.getText("login_page_password");System.out.println("i18n 测试: "+name);
在JSP页面中运用:
首先引用s标签
<%@ taglib prefix="s" uri="/struts-tags"%>
通过s标签获取配置信息,即可
<s:property value="getText('login_page_userName')" />:<input name="username" value="ndxfke">
在js中的使用:
思路是创建相对语言的js文件,将翻译好的语言进行相应的键、值配置,如:
创建 pageMessage_cn.js、pageMessage_en.js 文件,我这里在jsp中使用’request.getLocale().toString()’ 得到的是cn或en,所以这里的js文件后面没有写成cn_ZH或en_US来命名。
js文件进行配置,这里我采取对象的方式编写:
var pageMessage = { login_page_user_text : "USER", login_page_password_text : "PASSWORD"};
var pageMessage = { login_page_user_text : "用户名", login_page_password_text : "密码"};
JSP页面,根据语言环境引入js文件:
<%String locali18nJs = "pageMessage_"+request.getLocale().toString()+".js";%>
<script type="text/javascript" src="<%=basePath+"js/"+locali18nJs%>"></script> <script type="text/javascript"> alert(pageMessage.login_page_user_text); </script>
1 0
- JAVA 初学 i18n 国际化
- Java的国际化(i18n)
- Java的国际化(i18n)
- Java的国际化(i18n)
- 【Java】I18N国际化
- java项目JQ i18n国际化
- Java应用程序国际化(Java I18N) 总结
- 国际化--i18n
- 国际化-I18n
- 国际化i18n
- 国际化(I18N)
- I18N国际化
- 国际化i18n
- 国际化(i18n)
- 国际化(i18n)
- 国际化(i18n)
- 国际化i18n
- java国际化与 I18N 的由来
- leetcode 58. Length of Last Word
- 结巴分词流程图
- 实现矩阵的转置&原矩阵与转置后矩阵的乘机
- Point类的定义
- 【题解】 2016 ACM/ICPC Asia Regional Qingdao Online (6+5)
- JAVA 初学 i18n 国际化
- 第四周项目2-建设“单链表”算法库
- 撕衣服源码
- 2016 UESTC Training for Data Structures (1)
- 有关字符串的题目
- poj 2312 Battle City
- Android Context 上下文 你必须知道的一切
- python中的sum函数.sum(axis=1)
- Java学习总结第一天Java语言简介