【JEECG技术博文】JEECG国际化介绍
1、為什么要做國際化??
? 沒有國際化的框架是一個不完整的框架,特別在全球信息化的今天,國際化不再是雞肋,而是在選擇開發平臺時必須首要的考試因素,特別在有些公司平臺是否國際化具有一票否決要素,所以我們要搞國際化,而不是僅僅是簡單的高大尚。
2、國際化的實現原理?
??國際化聽起來簡單,但要框架中要做到與框架的無縫銜接,松耦合還是有一定難度的。有些系統有時不需要做國際化,在做國際化如果快速發現哪些沒有被國際化的字段等,這些問題都開發者在開發過程中實際需要解決的問題,而這一切我們都已經幫你想到了。
? 用戶在登錄頁面選擇語言后點擊登錄后在LoginControler.java中checkuser方法中可以看到下面代碼,當前語言會被放到session中。
if (req.getParameter("langCode")!=null) {req.getSession().setAttribute("lang", req.getParameter("langCode")); }? ? ? ? MutiLangServiceImpl.java 中有三個方法,分別介紹下作用:? ?1)initAllMutiLang()——TOMCAT啟動時會被自動加載,把國際化的表內容加載到內存中,方便以后快速調用,即加載表t_s_muti_lang中所有記錄并放在Cache中。
? ?2)getLang(String?lang_key)——傳入需要國際化的Lang?Key自動根據用戶當前語言來得到國際化后的值,如在某處調用如:?String?value?=?getLang(“common.status”),如果當前語言為中文則value為狀態,英文為Status? ? ?
? ??3)refleshMutiLangCach()——刷新Cache,在對語言進行維護的時候,比如添加一個語言可以自動把新加的自動加入到Cache里,保證實時生效。?
3、國際化應用的各種場合舉例??
? 我們以國際化維護頁面國際化為例??
? List及Tag國際化?
? ?
? langKey?可以接受輸入多個參數,舉例如:? ??
? lang.?congratulation.edit.success?對應中文是:恭喜你,{0}修改{1}。? ??
? 則在頁面上我們可以傳入的langArg的參數樣式為:? ??
? langArg=”?lang.function.name,?common.success”? ??
? lang.function.name會替代{0},?common.success會替代{1}?
??
? 客戶端label的國際化?
?
? Java后臺國際化
???
?后臺樹的國際化? ? ?
?如果你需要對樹做國際化,只要在表里把樹的名稱換成lang_key的值并且在樹返回的最后一步加代碼:MutiLangUtil.setMutiTree(treeGrids,?mutiLangService);就可以實現,具體可以參考菜單管理:
?Js國際化? ??
?由于Js文件中無法用國際化標簽,所以只能在src\main\webapp\plug-in\mutiLang目錄中添加us.js及zh-cn.js,這個文件已經在BaseTag中第一個默認引入了。
4、語言的維護?
?系統管理菜單中語言管理就可以對語言進行維護管理,注意不要添加已經存在的語言內容。若是有重復的內容,系統在添加的時候會自動提示。
5、lang_key的命名規范? ?
?1)系統已經有的國際化的就不用重復添加了,如:?common.status,對應?狀態,如果有狀態直接使用即要,不要再添加相同名稱不同lang_key的進去。? ??
?2)如果碰到國際化表中沒有的,則需要自己添加。? ? ? ? ??
? ?lang_key在t_s_mutilang表中命名的格式一定是?xxx.xxx(或者有更多的點)? ??
?3)如果是不常用的,如某個模塊中有個標簽叫“學生”,則命名時可以叫:lang.student? ??
?4)如果是一些公共的,則命名時用common開頭,如“操作”可能在系統各處都有可能用到,則命名可以叫:common.operation ? ?
?5)不用要一個單詞來命名作為lang_key,如student. ? ?
?6)如果是一個句子lang_key就寫下這個句子,單詞間用點來分開,如:common.please.select.one.record.to.edit?對應Please?select?one?record?to?edit? ??
?7)如果是一個句子lang_context首字母需要大寫,其他小寫,按正常英文句子的來拼寫,如:? ? ? ? ??
? ?Please?select?one?record?to?edit,?而不是?Please?Select?One?Record?To?Edit.? ??
?8)如果不是句子,如表頭上顯示,則lang_context可以全部首字母大寫,如:?User?Name,?Role?Name? ??
?9)前后命名要一致,比如部門有的人喜歡用簡寫如:depart,哪后面注意就全部用簡寫,不要一會出現depart,一會出現department很不協調。也不要一會出現desc,一會出現description.? ??
?10)單詞不要出現拼寫錯誤。? ??
?11) 翻譯要準確,不要出現無關內容。比如有某個網頁上的標題上中文是:學生添加,你可以用lang.student.add,有的人發現這是個標題就可能會寫成 ? ? lang.title.student.add,title這是這個出現的位置,請不要加這樣的位置信息。? ??
?12)所有List頁面(特例除外)的添加,修改都是用以下風格,對應模塊修改langArg的值?
? ?<t:dgToolBar?title="common.add.param"?langArg="common.language"? ? ? ??
? ?<t:dgToolBar?title="common.edit.param"?langArg="common.language"? ? ? ? ? ??
? ?翻譯過來就是?模塊名+錄入(編輯),比如:語言錄入,用戶錄入等,不要只放“錄入”以保證所有頁面的頁格一致。
6、我只是在國內做項目,不想看到lang_key可以么???
?當然可以,你還是可以按原來一樣寫代碼,比如:?? ??
? ?<t:datagrid?name="departList"?title="common.department.list"?改成? ??
? ?<t:datagrid?name="departList"?title="部門列表"? ??
?再把common.notfind.langkey?對應的?lang_context?會值由??改成空就可以了。?
7、為什么我用了國際化后前面多了個問號?? ??
?那是在提醒你該lang_key沒有做國際化,你只要在語言維護中添加即可,問號的目的就是個提醒,可以讓你一眼就看出哪些沒有做國際化。如果你討厭看到問號同樣把common.notfind.langkey?對應的?lang_context?會值由??改成空
總結
以上是生活随笔為你收集整理的【JEECG技术博文】JEECG国际化介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj 3616(简单dp)
- 下一篇: hdu 1024(滚动数组优化)