Читали ли вы Документы по весенней загрузке по интернационализации ? Я думаю, это не очень полезно.
Предположим, у вас есть такой набор ресурсов.
- src/main/resources/
- messages.properties
- messages_es.properties
- ...
Вам нужно добавить некоторую конфигурацию:
@Configuration
class AppConfig : WebMvcConfigurer {
@Bean
fun localeResolver() = SessionLocaleResolver().apply {
setDefaultLocale(Locale.ENGLISH)
}
@Bean
fun localeInterceptor() = LocaleChangeInterceptor().apply {
this.paramName = "lang"
}
override fun addInterceptors(registry: InterceptorRegistry) {
registry.addInterceptor(localeInterceptor())
}
}
Затем Пример использования greet.hello
может выглядеть следующим образом:
import org.springframework.context.MessageSource
import org.springframework.context.i18n.LocaleContextHolder
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
@RestController
class PageController(val messageSource: MessageSource) {
@GetMapping("/greet")
fun greet(): String {
return messageSource.getMessage("greet.hello", null, LocaleContextHolder.getLocale())
}
}
Если вы не думаете, что это выглядит красиво, попробуйте использовать некоторые функции Kotlin для его очистки.
Это как выбрать язык:
# Use the default
curl --request GET --url 'http://localhost:8080/greet'
# Hello
# Use English
curl --request GET --url 'http://localhost:8080/greet?lang=en'
# Hello
# Use Spanish
curl --request GET --url 'http://localhost:8080/greet?lang=es'
# Hola