ssh国际化
最近一点时间,公司项目上需要用到国际化。小小的研究了下,脑袋头都大了。不是说国际化难,而是看合不合适自己。
接触到国际化的技术分类有两种
因为项目框架的原因,我不得不使用Struts2 + i18next来进行国际化。这两种国际化的方式网上都有。我简单列下要注意的点
我的方法如下:
- /**
- * 语言切换
- * @return
- */
- publicvoid doChageLanguage(){
- String language =contextPvd.getRequestStr("language");
- Locale locale = null;
- if (language.equals("zh_CN")) {
- locale = Locale.CHINA;
- } else {
- locale = Locale.US;
- }
- //使用cookie 保存用户语言信息
- Cookie cookie = new Cookie("language", language);
- contextPvd.addCookie(cookie);
- cookie.setMaxAge(60 * 60 * 24 * 14);
- cookie.setPath(contextPvd.getAppCxtPath());
- //使用Session 保存用户语言信息
- contextPvd.setLocale(locale);
- contextPvd.setSessionAttr("WW_TRANS_I18N_LOCALE", locale);
- }
但是发现语言切换还是有问题,查询了下发下 Struts2有bug~(不知道现在修复了没,我用的版本比较老)
解决问题的方案见:
http://showtime520.iteye.com/blog/1042585(感谢分享)
我对上面代码进行了简单修改
见代码
- publicMyRequestWrapper(HttpServletRequest request) {
- super(request);
- Cookie cookie =null;
- Cookie[] cookies = request.getCookies();
- if (cookies != null) {
- for (Cookie c : cookies) {
- if (c.getName().equals("language")) {
- cookie =c ;
- }
- }
- }
- if(null !=cookie){
- Stringlanguage = cookie.getValue();
- if(!StringUtils.isBlank(language) ){
- if (language.equals("zh_CN")) {
- locale = Locale.CHINA;
- } else {
- locale = Locale.US;
- }
- }else{
- HttpSession session =request.getSession();
- locale = (Locale) session.getAttribute("WW_TRANS_I18N_LOCALE");
- }
- }
- }
主要使用Cookie 获取语言~~。Struts2注意点就这些。
然后讲讲 i18next,说实话如果不是框架的原因 单单使用i18next就可以完全实现国际化。
而且i18next非常小。但是i18next的资料很少,笔者的英语很烂,也只能咬着呀看官方文档,但还是说同学们看文档吧~~
关键初始化:
- var option = {
- ns: ‘i18n‘ ,
- sendType: ‘post‘,
- resGetPath: bootPATH+‘i18n/__lng__.json‘,
- debug: true,
- lng: language};
- i18n.init(option, function(err, t) {
- $("body").i18n();
- });
- Json格式:
- {
- "login":
- {
- "msg":"land successfully,Get tothe system right away...",
- "msg1": "landsuccessfully"
- }
- }
使用:
在页面中用 data-i18n="login.msg" 直接使用。js弹出 时用 直接用i18n.t("ogin.msg")的方式直接获取.
就写到这里。看看对你有没有帮助~~
关于ssh国际化的记录
来源: http://www.bubuko.com/infodetail-2327315.html