1. 程式人生 > >(飛歌筆記)資料國際化和提示資訊國家化

(飛歌筆記)資料國際化和提示資訊國家化

公司要求對資料進行國際化和驗證提示資訊進行國際化。

其中驗證提示國際化這個遇到問題。因為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;
    }