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;
}