Re: [問題] 新手的一個小問題,求解

看板java作者 (心中在下雨)時間6年前 (2018/09/14 11:40), 編輯推噓1(101)
留言2則, 2人參與, 6年前最新討論串3/3 (看更多)
※ 引述《kogrs (kogrs)》之銘言: : 我習慣用 jstl (+ apache standard taglib) 的<fmt:message> 做i18n : apache standard taglib 的做法是,若找不到該 key 對應的字串, : 則在該key的前後加上 ??? ,然後輸出 : 所以我的想法是,利用<fmt:message 把i18n後的字串存到 str 變數 : 然後在把str 變數內的 ??? 替換掉 : 步驟如下 : jsp 內宣告 bundle : <fmt:setBundle basename="XXXXXXX" var="myBundle"/> : 然後把原本<bean:message> 都改成 : <fmt:message key="hello" var="myBundle"/>${fn:replace(myBundle,'???','')} 抱歉,上面這部分我看不太懂 XXXXXX表示什麼? 所以我是在原本 <bean:message> 的位置要放什麼才會正確顯示? : 當然,若你會改standard taglib source的話,改一行就搞定 : 就可以用標準的 <fmt:message> taglib 來輸出i18n了 最後我再補充一下 由於有些文字是在 javascript 會被使用到的 所以就會有一個這樣的js程式區塊 來將資訊傳遞到 js <script> window.msg['hello'] = "<bean:message key='hello'/>"; window.msg['try.again'] = "<bean:message key='try.again'/>"; window.msg['login.fail'] = "<bean:message key='login.fail'/>"; . . . </script> 然後只要有新增翻譯文字 就必須要在這裡也同樣加入對應的文字 這個動作有辦法簡化(or程式化)嗎? 因為有些翻譯只是新的server回應代碼,是不需要動到 javascript 的部分 如 user.action.1 / user.action.2 / .........etc : ※ 引述《no1kk (心中在下雨)》之銘言: : : 嗨,各位好 : : 我是做前端的,但是因為各種理由我現在必須要修改jsp檔案的內容 : : 希望可以大家幫幫我... : : 在檔案中會有這樣的東西 : : <bean:message key='hello'/> : : 我們是用於多語系的翻譯之用,讓頁面上顯示正確語系的文字 : : 但由於前端、後端、翻譯人員的工作並非同步 : : 因此若翻譯人員 or 後端若尚未定義 hello 的翻譯內容 : : 則前端將會出現 error 500 的錯誤 : : 所以我希望可以將這部分改成呼叫一個 function : : 若有 hello 的中文翻譯,則傳回 "哈囉",若無則傳回原始字串 : : 以免在沒有資料時頁面發生錯誤 : : 以 javascript 來表示的話就像這樣 : : function translation(txt){ : : if(typeof(msg[txt]) == 'string'){ : : return msg[txt]; : : }else{ : : return txt; : : } : : } : : 感謝各位 : : 補充一下目前的問題瓶頸 : : 1. <bean:message key='hello'/> 這個值我要怎麼在程式中取出來做判斷 : : 2. 我要怎麼知道該值有沒有被定義? : : 3. 輸出在 html 之中,這部分我目前的理解應該是 : : <%=translation('hello')%> : : 以上請多指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.155.60 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1536896420.A.789.html

09/14 12:15, 6年前 , 1F
嗯 jstl在jsp用的很廣泛 建議翻一翻喔
09/14 12:15, 1F

09/15 14:18, 6年前 , 2F
傳json就好啊
09/15 14:18, 2F
文章代碼(AID): #1RcosaU9 (java)
文章代碼(AID): #1RcosaU9 (java)