anataliocs
5/15/2015 - 7:23 PM

Validation messages in messages.properties file for i18n internationalization by locale in spring boot

Validation messages in messages.properties file for i18n internationalization by locale in spring boot


user.login.invalid.id=0
user.login.invalid=Your user name or password was invalid
@RestController
@RequestMapping("/user")
public class UserControler {

    @Autowired
    UserService userService;

    @Autowired
    MessageByLocaleService messageByLocaleService;
    
    @RequestMapping(value = "/userlogin", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<User> login(
            @RequestBody UserCred userCred)
            throws UnsupportedEncodingException {
    
    String invalidLogin = messageByLocaleService.getMessage("user.login.invalid");
    }
}
@Component
public class MessageByLocaleServiceImpl implements MessageByLocaleService {

    @Autowired
    private MessageSource messageSource;

    @Override
    public String getMessage(String id) {
        Locale locale = LocaleContextHolder.getLocale();
        return messageSource.getMessage(id,null,locale);
    }
}
public interface MessageByLocaleService {

    public String getMessage(String id);
}
public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);
    }

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "
    }

    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        slr.setDefaultLocale(Locale.US);
        return slr;
    }

    @Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:locale/messages");
        messageSource.setCacheSeconds(3600); //refresh cache once per hour
        return messageSource;
    }
}