Re: [問題] 新手的一個小問題,求解
我習慣用 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,'???','')}
當然,若你會改standard taglib source的話,改一行就搞定
就可以用標準的 <fmt:message> taglib 來輸出i18n了
※ 引述《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), 來自: 111.240.222.53
※ 文章網址: https://www.ptt.cc/bbs/java/M.1536863029.A.8F2.html
※ 編輯: kogrs (111.240.222.53), 09/14/2018 02:25:00
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章