Springboot国際構成プロセス

1.国際ファイルを構成します

リソースの下にi18nフォルダーを追加します変換されたファイルのサフィックスを以下に配置するためのルールがあります。デフォルトのmessages.properties、英語:messages_en_US.properties、中国語:messages_zh_CN.properties。

といった

2.これらのファイルの場所をspringbootに伝えます

@Configuration
public class I18nConfig {

    @Value(value = "${spring.messages.basename}")
    private String basename;
    @Value(value = "${spring.messages.encoding}")
    private String encoding;

    @Bean(name = "messageSource")
    public ResourceBundleMessageSource getMessageResource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasename(basename);
        messageSource.setDefaultEncoding(encoding);
        return messageSource;
    }
}

2つの構成をymlに入れます

spring:
  messages:
    basename: i18n/messages
    encoding: UTF-8

3.MessageSourceをカプセル化します

このクラスは、国際化されたファイルのコンテンツを取得するための公式クラスです。カプセル化します。(1)getRequestMessageはリクエスト言語に従って変換されます(2)getLocalMessageはローカルタイムゾーンに従って変換されます

@Component
public class MessageSourceHandler {

    @Autowired
    private HttpServletRequest request;

    @Autowired
    private MessageSource messageSource;

    public String getRequestMessage(String messageKey) {
        String message = messageSource.getMessage(messageKey, null, RequestContextUtils.getLocale(request));
        return message;
    }

    public String getLocalMessage(String messageKey) {
        String message = messageSource.getMessage(messageKey, null, LocaleContextHolder.getLocale());
        return message;
    }
}

4.例外クラスをキャッチし、国際化を使用します

パッケージ化されたツールクラスを呼び出すことにより、messageSourceUtil.getLocalMessage(String.valueOf(ex.getStatus()))はエラーコードを介してエラーメッセージを取得し、フロントエンドに返します。

    @ResponseBody
    @ExceptionHandler(value = FastBootException.class)
    public FastBootResult myErrorHandler(FastBootException ex) {
        LOGGER.error(ex.getMessage(), ex);
        FastBootResult response = new FastBootResult();
        response.setError(ex.getStatus(), null, messageSourceUtil.getLocalMessage(String.valueOf(ex.getStatus())));
        return response;
    }

 

おすすめ

転載: blog.csdn.net/Mint6/article/details/103658950