关于ssh国际化的记录
最近一點時間,公司項目上需要用到國際化。小小的研究了下,腦袋頭都大了。不是說國際化難,而是看合不合適自己。
接觸到國際化的技術(shù)分類有兩種
1.???前臺js國際化
a)?????jquery.i18n.properties
b)????jquery.i18n
c)?????i18next
2.???后臺框架及java原生國際化方法
a)?????Java原生 ResourceBundle獲取en_US.properties文件,獲取值
b)????Struts2配置相應配置文件 action繼承ActionSupport方法,用getText方法取值頁面引入Struts2標簽庫的方式取值。
c)?????Spring進行國際化. 和Struts2差不多。
因為項目框架的原因,我不得不使用Struts2 + i18next來進行國際化。這兩種國際化的方式網(wǎng)上都有。我簡單列下要注意的點
1.??? Struts2國際化會針對游覽器語言進行自動切換語言,但常常我們自己希望控制語言的切換。
我的方法如下:
?
????/***?語言切換*?@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); }但是發(fā)現(xiàn)語言切換還是有問題,查詢了下發(fā)下 Struts2有bug~(不知道現(xiàn)在修復了沒,我用的版本比較老)
解決問題的方案見:
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就可以完全實現(xiàn)國際化。
而且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")的方式直接獲取.
就寫到這里。看看對你有沒有幫助~~
轉(zhuǎn)載于:https://blog.51cto.com/thlovesky/1968957
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的关于ssh国际化的记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云通讯平台:为更多游戏玩家解放双手
- 下一篇: 利用perf排查sys高的问题