В Spring Boot и Kotlin как правильно добавить интернационализацию? - PullRequest
0 голосов
/ 11 февраля 2020

Я следил за этим учебным пособием, и я могу следовать ему, хотя у меня были некоторые проблемы.

Почти в конце, где говорится о свойствах конфигурации, хотя я и был Хорошая идея - попытаться установить для него какую-то интернационализацию, с другим файлом в зависимости от языка, но я не смог этого сделать. Я загружаю его только на Engli sh, как бы я ни пытался.

1 Ответ

1 голос
/ 12 февраля 2020

Читали ли вы Документы по весенней загрузке по интернационализации ? Я думаю, это не очень полезно.

Предположим, у вас есть такой набор ресурсов.

- 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...