@Factory
public class AppConfig {
@Bean
public MessageSource messageSource(){
return new ResourceBundleMessageSource("i18n.SampleLocalizedStrings");
}
}
MessageSourceをInjectして、デフォルト言語/英語/日本語でログ出力
@Controller
public class SampleController {
private static final Logger LOGGER = LoggerFactory.getLogger(SampleController.class);
@Inject
MessageSource message;
@Get
public String printLocalizedStrings() {
LOGGER.debug(message.getMessage("hoge_message", MessageSource.MessageContext.DEFAULT).orElse("not found!!"));
LOGGER.debug(message.getMessage("hoge_message", MessageSource.MessageContext.of(Locale.ENGLISH)).orElse("not found!!"));
LOGGER.debug(message.getMessage("hoge_message", MessageSource.MessageContext.of(Locale.JAPANESE)).orElse("not found!!"));
return "dummy";
}
}
START RequestId: ********-****-****-****-************ Version: $LATEST
2021/02/09 14:56:52.449 DEBUG [main] message in English (SampleController printLocalizedStrings)
2021/02/09 14:56:52.449 DEBUG [main] message in English (SampleController printLocalizedStrings)
2021/02/09 14:56:52.449 DEBUG [main] message in English (SampleController printLocalizedStrings)
END RequestId: ********-****-****-****-************
Javaのまま、AWS Lambdaで実行した場合のログ → ちゃんと指定した言語で出力されます。
START RequestId: ********-****-****-****-************ Version: $LATEST
2021/02/09 14:58:21.302 DEBUG [main] message in English (SampleController printLocalizedStrings)
2021/02/09 14:58:21.302 DEBUG [main] message in English (SampleController printLocalizedStrings)
2021/02/09 14:58:21.302 DEBUG [main] message in Japanese (SampleController printLocalizedStrings)
END RequestId: ********-****-****-****-************