スプリングメッセージソースの設定

2269 ワード

スプリングメッセージソースの設定

  • メッセージ管理機能を使用するには、springが提供するメッセージソースをspringbinとして登録するだけで、メッセージソースはインタフェースです.
  • したがって、インプリメンテーションは、ResourceBundleMessageSourceをSpringBinとして登録するだけでよい.

    直接登録

        @Bean
        public MessageSource messageSource() {
            final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
            messageSource.setBasenames("messages", "errors");
            messageSource.setDefaultEncoding("utf-8");
            return messageSource;
        }
  • basenames:プロファイルの名前を指定します.
  • メールとして指定されている場合は、メールです.propertiesファイルを読み込み、使用します.
  • より多くの国際化機能を適用するには、message enを使用します.properties, messages_ko.propertiesのように、ファイル名の最後に言語情報を与えればよい.
  • 国際化されたファイルがなければ、メールを送ります.デフォルトではproperties(言語情報のないファイル名)が使用されます.
  • ファイルは/resources/messagesにあります.propertiesに置けばいいです
  • の複数のファイルを一度に指定できます.
  • 上のコードは、errorsの2つのメッセージを指定します.
  • defaultEncode:符号化情報を指定します.
  • ばね起動

  • スプリング・ブートを使用すると、スプリング・ブートはメッセージ・ソースを自動的にスプリング・ビンとして登録します.
  • スプリング起動メッセージソースの設定

  • スプリング・ブートを使用して、メッセージ・ソースを次のように設定できます.
  • application.properties

    spring.messages.basename=messages,config.i18n.messages

    スプリング起動メッセージソースのデフォルト値

    spring.messages.basename=messages
  • メッセージソースがspring beanとして登録されておらず、springブートに関連する他の設定がない場合は、デフォルトでメッセージとして登録されます.
  • 、message enによると.properties, messages_ko.properties, messages.propertiesファイルを登録すると自動的に認識されます.
  • スプリングの国際メッセージの選択

  • メッセージ機能は、言語を選択するためにLocale情報を理解する必要があります.
  • 最終的には、言語を選択するにはLocle情報を知る必要があります.Springは言語を選択する際に基本的にAccept-Languageヘッダの値を使用します.

    LocaleResolver

  • スプリングはLocaleResolverというインタフェースを提供し、LocaleResolverの選択方法を変更することができますが、Spring Bootは基本的にAcceptor-Lamerialを使用するAcceptorHeaderLocaleResolverを使用しています.
  • public interface LocaleResolver {
    	Locale resolveLocale(HttpServletRequest request);
        
        void setLocale(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable Locale locale);
    }

    LocaleResolverの変更

  • Locale選択を変更する場合は、LocaleResolverのインプリメンテーションを変更してCookieまたはセッションベースのLocale選択機能を使用できます.