(飛歌筆記)數據國際化和提示信息國家化

公司要求對數據進行國際化和驗證提示信息進行國際化。

其中驗證提示國際化這個遇到問題。因爲spring boot也可以進行國際化。所以就一直沒繞出這個問題。我們使用的是hibernate validator 來進行國際化的。所以應該是對hibernate validator進行國際化。而不是用spring boot 進行國際化。關鍵代碼如下:

/**
     * ********************************************************   
     * @Title: validateEntityIn   
     * @Description: 實體類校驗--國際化方法
     * @Param: @param obj
     * @Param: @return      
     * @Return: ValidationResult      
     * @Throws 
     * @Author ganjing
     **********************************************************
     */
    public static <T> ValidationResult validateEntityIn(T obj,String lang){
        ValidationResult result = new ValidationResult();
        Locale locale = null;
        if(LanguageEnum.US_ENGLISH.getCode().equals(lang)) {
            locale = LanguageEnum.US_ENGLISH.getLocale();
        }else {
            locale = LanguageEnum.ZH_CHINESE.getLocale();
        }
         Set<ConstraintViolation<T>> set = getValidatorByLocale(locale).validate(obj,Default.class);
         if( CollectionUtils.isNotEmpty(set) ){
             result.setHasErrors(true);
             Map<String,String> errorMsg = new HashMap<String,String>();
             for(ConstraintViolation<T> cv : set){
                 errorMsg.put(cv.getPropertyPath().toString(), cv.getMessage());
             }
             result.setErrorMsg(errorMsg);
         }
         return result;
    }
    /**
     * ********************************************************   
     * @Title: getValidatorByLocale   
     * @Description:得到不同語言驗證器
     * @Param: @param locale
     * @Param: @return      
     * @Return: Validator      
     * @Throws 
     * @Author ganjing
     **********************************************************
     */
    public static Validator getValidatorByLocale(Locale locale) {
        Locale.setDefault(locale);
        Validator validator = Validation.byDefaultProvider().configure()
                .messageInterpolator(
                        new ResourceBundleMessageInterpolator(new PlatformResourceBundleLocator("i18n/MyMessages")))
            .buildValidatorFactory().getValidator();
        return validator;
    }

 

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