(飞歌笔记)数据国际化和提示信息国家化

公司要求对数据进行国际化和验证提示信息进行国际化。

其中验证提示国际化这个遇到问题。因为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;
    }

猜你喜欢

转载自blog.csdn.net/ganjing222/article/details/82870660