正則匹配實現消息國際化

之前做了i18n的國際化,根據請求參數language返回對應的國際化文字。然後需求要生成的消息也要國際化。考慮的解決方案是保存消息時保存所有語言版本的消息。然後查詢時再根據語言查詢。

消息的模板是這樣的,例如:{"zh":"機器{machineName}停機時長{time}","en":"machine {machineName} stop last {time}"}

然後再把相應的參數替換模板。

結果問題出現了,某些消息的時間是通過計算獲得的,比如持續時間根據時間長短,會生成a天b時或者a時b分或者a分b秒這樣,所以我必須根據不同的語言來生成時間。而我想把這做成動態的,而不是在代碼裏寫死。比如{time_en}就自動使用英文來生成時間。

{"zh":"機器{machineName}停機時長{time_zh}","en":"machine {machineName} stop last {time_en}"}

	String template = "{\"zh\":\"機器{machineName}停機時長{time_zh}\",\"en\":\"machine {machineName} stop last {time_en}\"}";
	String content = template.replace("{machineName}",machineName);
	Pattern pattern = Pattern.compile("\\{time_(\\w{2})\\}");
    Matcher m = pattern.matcher(content);
    while(m.find()) {
    	String language = m.group(1);
    	String replace = m.group();
    	String time = DateUtils.convertToDayHourMinByLanguage(diffTime, language);//通過不同語言計算時間
    	content = content.replace(replace, time);
    }

這樣只要新增語言的時候就不需要修改代碼只要改變模板就行了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章