복붙노트

[SPRING] Spring에서 국제화를 위해 여러 파일과 메시지를 처리하는 방법은 무엇입니까?

SPRING

Spring에서 국제화를 위해 여러 파일과 메시지를 처리하는 방법은 무엇입니까?

Spring 국제화에 관한 몇몇 기사는 로케일 등을 통과하는 메시지를 교환하는 방법을 알려주지 만 몇 가지 메시지 만 포함하는 유스 케이스를 발견했다.

내가 생각하는 것 :

resources
`-- messages
    |-- validation
    |   |-- message_locale.properties
    |   `-- message_locale2.properties
    |-- business
    |   |-- message_locale.properties
    |   `-- message_locale2.properties
    `-- view
        |-- message_locale.properties
        `-- message_locale2.properties

또는:

resources
`-- messages
    |-- validation
    |   |-- validation_locale.properties
    |   `-- validation_locale2.properties
    |-- business
    |   |-- business_locale.properties
    |   `-- business_locale2.properties
    `-- view
        |-- view_locale.properties
        `-- view_locale2.properties

해결법

  1. ==============================

    1.모든 다른 메시지 파일에 대해 전역 MessageSource를 정의 할 수 있습니다. 이 방법은 setBasenames 메서드를 사용하면 실용적입니다.

    모든 다른 메시지 파일에 대해 전역 MessageSource를 정의 할 수 있습니다. 이 방법은 setBasenames 메서드를 사용하면 실용적입니다.

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = 
                                                   new ReloadableResourceBundleMessageSource();
        messageSource.setBasenames("classpath:/messages/business/message", 
                                   "classpath:/messages/validation/message",
                                   "classpath:/messages/view/message");
    
        return messageSource;
    }
    

    이 방법은 메시지 키가 모든 파일에서 고유 한 경우 (예 : business-12 키는 비즈니스 관련 메시지 소스에서만 종료됩니다. 그렇지 않으면 컨텍스트마다 하나의 MessageSource를 정의하고 컨텍스트에 따라 삽입하는 것이 좋습니다.

    @Bean
    public MessageSource businessMessageSource() {
        ReloadableResourceBundleMessageSource messageSource = 
                                                   new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/messages/business/message");
    
        return messageSource;
    }
    
    @Bean
    public MessageSource validationMessageSource() {
        ReloadableResourceBundleMessageSource messageSource = 
                                                   new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/messages/validation/message");
    
        return messageSource;
    }
    
    @Bean
    public MessageSource viewMessageSource() {
        ReloadableResourceBundleMessageSource messageSource = 
                                                   new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/messages/view/message");
    
        return messageSource;
    }
    
  2. from https://stackoverflow.com/questions/40165151/how-to-handle-multiple-files-and-messages-for-internationalization-in-spring by cc-by-sa and MIT license