0

After adding my application in docker container, language switching does not work correctly ... I found out that switching partially works. Objects that are taken from the database are displayed in the desired language. And the text that is taken from messages.properties is displayed only in English. Although I have added two languages ​​(Russian and English). Why is this happening and how to fix this problem?

I guess the case may be in messageSource.setBasename ("classpath: messages").

@Configuration
class WebConfig: WebMvcConfigurer {

    @Bean
    fun  localeResolver(): LocaleResolver {
        val slr = SessionLocaleResolver()
        slr.setDefaultLocale(UtilsLocale.getDefault())
        return slr;
    }

    @Bean
    fun localeChangeInterceptor(): LocaleChangeInterceptor {
        val lci = LocaleChangeInterceptor()
        lci.paramName = "language"
        return lci
    }

    @Bean
    fun messageSource(): MessageSource {
        val messageSource = ReloadableResourceBundleMessageSource()
        messageSource.setBasename("classpath:messages")
        messageSource.setDefaultEncoding("UTF-8")
        return messageSource
    }

    @Bean
    fun validator(): LocalValidatorFactoryBean {
        val bean = LocalValidatorFactoryBean()
        bean.setValidationMessageSource(messageSource())
        return bean
    }

    override fun addInterceptors(registry: InterceptorRegistry) {
        registry.addInterceptor(localeChangeInterceptor())
    }

}

@Component
object UtilsLocale {
    val LOCALE_RU = Locale("ru", "RU")
    val LOCALE_EN = Locale.ENGLISH

    fun getDefault(): Locale = LOCALE_RU

    fun getAll(): Array<Locale> = arrayOf(LOCALE_RU, LOCALE_EN)
}

This is Dockerfile:

FROM anapsix/alpine-java:8_jdk

MAINTAINER Zemtsov Alexey Vladimirovich <***>

ARG CONTEXT_PATH
ARG DB_HOST
ARG DB_PORT
ARG DB_NAME
ARG DB_USER
ARG DB_PASSWORD
ARG MAIL_LOGIN
ARG MAIL_PASSWORD

ENV PATH_DIR /tmp/webapp

WORKDIR $PATH_DIR

ADD target/webapp-*.jar webapp.jar

EXPOSE 8080

ENTRYPOINT java -jar webapp.jar

This is docker-compose.yml

version: '3.7'

services:

  db:
    image: mysql:8.0.17
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ****
    ports:
      - 3306:3306
    volumes:
      - /home/alexey/temp/mysql01:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 3380:8080

  webapp:
    build:
      context: .
    environment:
      CONTEXT_PATH: /a-test
      DB_HOST: db
      DB_PORT: 3306
      DB_NAME: ****
      DB_USER: ****
      DB_PASSWORD: ****
      MAIL_LOGIN: ****
      MAIL_PASSWORD: ****
    ports:
      - 80:8080
    volumes:
      - /home/alexey/temp/webapp/logs:/tmp/webapp/logs
    depends_on:
      - db

EDITED: This is log sys props^

[INFO ] 2019-09-11 15:35:03.186 [main] PropertiesLogger - ******* systemProperties *******
[INFO ] 2019-09-11 15:35:03.229 [main] PropertiesLogger - PID=1
[INFO ] 2019-09-11 15:35:03.233 [main] PropertiesLogger - awt.toolkit=sun.awt.X11.XToolkit
[INFO ] 2019-09-11 15:35:03.234 [main] PropertiesLogger - file.encoding=UTF-8
[INFO ] 2019-09-11 15:35:03.235 [main] PropertiesLogger - file.encoding.pkg=sun.io
[INFO ] 2019-09-11 15:35:03.237 [main] PropertiesLogger - file.separator=/
[INFO ] 2019-09-11 15:35:03.239 [main] PropertiesLogger - java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
[INFO ] 2019-09-11 15:35:03.241 [main] PropertiesLogger - java.awt.headless=true
[INFO ] 2019-09-11 15:35:03.242 [main] PropertiesLogger - java.awt.printerjob=sun.print.PSPrinterJob
[INFO ] 2019-09-11 15:35:03.244 [main] PropertiesLogger - java.class.path=webapp.jar
[INFO ] 2019-09-11 15:35:03.246 [main] PropertiesLogger - java.class.version=52.0
[INFO ] 2019-09-11 15:35:03.248 [main] PropertiesLogger - java.endorsed.dirs=/opt/jdk1.8.0_202/jre/lib/endorsed
[INFO ] 2019-09-11 15:35:03.249 [main] PropertiesLogger - java.ext.dirs=/opt/jdk1.8.0_202/jre/lib/ext:/usr/java/packages/lib/ext
[INFO ] 2019-09-11 15:35:03.253 [main] PropertiesLogger - java.home=/opt/jdk1.8.0_202/jre
[INFO ] 2019-09-11 15:35:03.268 [main] PropertiesLogger - java.io.tmpdir=/tmp
[INFO ] 2019-09-11 15:35:03.269 [main] PropertiesLogger - java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
[INFO ] 2019-09-11 15:35:03.271 [main] PropertiesLogger - java.protocol.handler.pkgs=org.springframework.boot.loader
[INFO ] 2019-09-11 15:35:03.272 [main] PropertiesLogger - java.runtime.name=Java(TM) SE Runtime Environment
[INFO ] 2019-09-11 15:35:03.272 [main] PropertiesLogger - java.runtime.version=1.8.0_202-b08
[INFO ] 2019-09-11 15:35:03.281 [main] PropertiesLogger - java.specification.name=Java Platform API Specification
[INFO ] 2019-09-11 15:35:03.282 [main] PropertiesLogger - java.specification.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.282 [main] PropertiesLogger - java.specification.version=1.8
[INFO ] 2019-09-11 15:35:03.283 [main] PropertiesLogger - java.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.283 [main] PropertiesLogger - java.vendor.url=http://java.oracle.com/
[INFO ] 2019-09-11 15:35:03.284 [main] PropertiesLogger - java.vendor.url.bug=http://bugreport.sun.com/bugreport/
[INFO ] 2019-09-11 15:35:03.292 [main] PropertiesLogger - java.version=1.8.0_202
[INFO ] 2019-09-11 15:35:03.292 [main] PropertiesLogger - java.vm.info=mixed mode
[INFO ] 2019-09-11 15:35:03.293 [main] PropertiesLogger - java.vm.name=Java HotSpot(TM) 64-Bit Server VM
[INFO ] 2019-09-11 15:35:03.293 [main] PropertiesLogger - java.vm.specification.name=Java Virtual Machine Specification
[INFO ] 2019-09-11 15:35:03.294 [main] PropertiesLogger - java.vm.specification.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.295 [main] PropertiesLogger - java.vm.specification.version=1.8
[INFO ] 2019-09-11 15:35:03.302 [main] PropertiesLogger - java.vm.vendor=Oracle Corporation
[INFO ] 2019-09-11 15:35:03.306 [main] PropertiesLogger - java.vm.version=25.202-b08
[INFO ] 2019-09-11 15:35:03.311 [main] PropertiesLogger - line.separator=

[INFO ] 2019-09-11 15:35:03.315 [main] PropertiesLogger - os.arch=amd64
[INFO ] 2019-09-11 15:35:03.316 [main] PropertiesLogger - os.name=Linux
[INFO ] 2019-09-11 15:35:03.316 [main] PropertiesLogger - os.version=4.15.0-60-generic
[INFO ] 2019-09-11 15:35:03.316 [main] PropertiesLogger - path.separator=:
[INFO ] 2019-09-11 15:35:03.317 [main] PropertiesLogger - spring.beaninfo.ignore=true
[INFO ] 2019-09-11 15:35:03.317 [main] PropertiesLogger - sun.arch.data.model=64
[INFO ] 2019-09-11 15:35:03.318 [main] PropertiesLogger - sun.boot.class.path=/opt/jdk1.8.0_202/jre/lib/resources.jar:/opt/jdk1.8.0_202/jre/lib/rt.jar:/opt/jdk1.8.0_202/jre/lib/sunrsasign.jar:/opt/jdk1.8.0_202/jre/lib/jsse.jar:/opt/jdk1.8.0_202/jre/lib/jce.jar:/opt/jdk1.8.0_202/jre/lib/charsets.jar:/opt/jdk1.8.0_202/jre/lib/jfr.jar:/opt/jdk1.8.0_202/jre/classes
[INFO ] 2019-09-11 15:35:03.318 [main] PropertiesLogger - sun.boot.library.path=/opt/jdk1.8.0_202/jre/lib/amd64
[INFO ] 2019-09-11 15:35:03.319 [main] PropertiesLogger - sun.cpu.endian=little
[INFO ] 2019-09-11 15:35:03.319 [main] PropertiesLogger - sun.cpu.isalist=
[INFO ] 2019-09-11 15:35:03.320 [main] PropertiesLogger - sun.io.unicode.encoding=UnicodeLittle
[INFO ] 2019-09-11 15:35:03.326 [main] PropertiesLogger - sun.java.command=webapp.jar
[INFO ] 2019-09-11 15:35:03.331 [main] PropertiesLogger - sun.java.launcher=SUN_STANDARD
[INFO ] 2019-09-11 15:35:03.331 [main] PropertiesLogger - sun.jnu.encoding=UTF-8
[INFO ] 2019-09-11 15:35:03.332 [main] PropertiesLogger - sun.management.compiler=HotSpot 64-Bit Tiered Compilers
[INFO ] 2019-09-11 15:35:03.335 [main] PropertiesLogger - sun.os.patch.level=unknown
[INFO ] 2019-09-11 15:35:03.341 [main] PropertiesLogger - user.dir=/tmp/webapp
[INFO ] 2019-09-11 15:35:03.350 [main] PropertiesLogger - user.home=/root
[INFO ] 2019-09-11 15:35:03.351 [main] PropertiesLogger - user.language=en
[INFO ] 2019-09-11 15:35:03.351 [main] PropertiesLogger - user.name=root
[INFO ] 2019-09-11 15:35:03.352 [main] PropertiesLogger - user.timezone=GMT
[INFO ] 2019-09-11 15:35:03.352 [main] PropertiesLogger - ******* systemEnvironment *******
[INFO ] 2019-09-11 15:35:03.352 [main] PropertiesLogger - CONTEXT_PATH=/a-test
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_HOST=db
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_NAME=****
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_PASSWORD=****
[INFO ] 2019-09-11 15:35:03.353 [main] PropertiesLogger - DB_PORT=3306
[INFO ] 2019-09-11 15:35:03.354 [main] PropertiesLogger - DB_USER=***
[INFO ] 2019-09-11 15:35:03.354 [main] PropertiesLogger - GLIBC_REPO=https://github.com/sgerrand/alpine-pkg-glibc
[INFO ] 2019-09-11 15:35:03.354 [main] PropertiesLogger - GLIBC_VERSION=2.29-r0
[INFO ] 2019-09-11 15:35:03.355 [main] PropertiesLogger - HOME=/***
[INFO ] 2019-09-11 15:35:03.356 [main] PropertiesLogger - HOSTNAME=16adb4c57c07
[INFO ] 2019-09-11 15:35:03.357 [main] PropertiesLogger - JAVA_HOME=/opt/jdk
[INFO ] 2019-09-11 15:35:03.357 [main] PropertiesLogger - JAVA_JCE=standard
[INFO ] 2019-09-11 15:35:03.358 [main] PropertiesLogger - JAVA_PACKAGE=jdk
[INFO ] 2019-09-11 15:35:03.358 [main] PropertiesLogger - JAVA_VERSION_BUILD=08
[INFO ] 2019-09-11 15:35:03.359 [main] PropertiesLogger - JAVA_VERSION_MAJOR=8
[INFO ] 2019-09-11 15:35:03.360 [main] PropertiesLogger - JAVA_VERSION_MINOR=202
[INFO ] 2019-09-11 15:35:03.361 [main] PropertiesLogger - LANG=C.UTF-8
[INFO ] 2019-09-11 15:35:03.362 [main] PropertiesLogger - MAIL_LOGIN=****
[INFO ] 2019-09-11 15:35:03.362 [main] PropertiesLogger - MAIL_PASSWORD=****
[INFO ] 2019-09-11 15:35:03.363 [main] PropertiesLogger - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/jdk/bin
[INFO ] 2019-09-11 15:35:03.364 [main] PropertiesLogger - PATH_DIR=/tmp/webapp
[INFO ] 2019-09-11 15:35:03.364 [main] PropertiesLogger - PWD=/tmp/webapp
[INFO ] 2019-09-11 15:35:03.365 [main] PropertiesLogger - SHLVL=1
[INFO ] 2019-09-11 15:35:03.365 [main] PropertiesLogger - ******* applicationConfig: [classpath:/application.yml] *******
[INFO ] 2019-09-11 15:35:03.366 [main] PropertiesLogger - entitymanager.packagesToScan=work.chessman.webapp.database.entity
[INFO ] 2019-09-11 15:35:03.369 [main] PropertiesLogger - server.port=8080
[INFO ] 2019-09-11 15:35:03.380 [main] PropertiesLogger - server.servlet.context-path=${CONTEXT_PATH} OVERRIDDEN to /a-test
[INFO ] 2019-09-11 15:35:03.386 [main] PropertiesLogger - server.tomcat.max-http-post-size=1073741824
[INFO ] 2019-09-11 15:35:03.391 [main] PropertiesLogger - spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
[INFO ] 2019-09-11 15:35:03.400 [main] PropertiesLogger - spring.datasource.initial-size=5
[INFO ] 2019-09-11 15:35:03.404 [main] PropertiesLogger - spring.datasource.initialization-mode=always
[INFO ] 2019-09-11 15:35:03.406 [main] PropertiesLogger - spring.datasource.max-active=50
[INFO ] 2019-09-11 15:35:03.411 [main] PropertiesLogger - spring.datasource.max-idle=10
[INFO ] 2019-09-11 15:35:03.418 [main] PropertiesLogger - spring.datasource.min-idle=5
[INFO ] 2019-09-11 15:35:03.420 [main] PropertiesLogger - spring.datasource.password=${DB_PASSWORD} OVERRIDDEN to ******
[INFO ] 2019-09-11 15:35:03.422 [main] PropertiesLogger - spring.datasource.platform=mysql
[INFO ] 2019-09-11 15:35:03.426 [main] PropertiesLogger - spring.datasource.test-on-borrow=true
[INFO ] 2019-09-11 15:35:03.431 [main] PropertiesLogger - spring.datasource.url=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true OVERRIDDEN to jdbc:mysql://db:3306/chessman_work?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false&createDatabaseIfNotExist=true
[INFO ] 2019-09-11 15:35:03.438 [main] PropertiesLogger - spring.datasource.username=${DB_USER} OVERRIDDEN to root
[INFO ] 2019-09-11 15:35:03.440 [main] PropertiesLogger - spring.datasource.validation-query=SELECT 1
[INFO ] 2019-09-11 15:35:03.441 [main] PropertiesLogger - spring.jpa.generate-ddl=true
[INFO ] 2019-09-11 15:35:03.448 [main] PropertiesLogger - spring.jpa.hibernate.ddl-auto=update
[INFO ] 2019-09-11 15:35:03.448 [main] PropertiesLogger - spring.jpa.properties.hibernate.current_session_context_class=thread
[INFO ] 2019-09-11 15:35:03.449 [main] PropertiesLogger - spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
[INFO ] 2019-09-11 15:35:03.450 [main] PropertiesLogger - spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
[INFO ] 2019-09-11 15:35:03.450 [main] PropertiesLogger - spring.jpa.show-sql=false
[INFO ] 2019-09-11 15:35:03.471 [main] PropertiesLogger - spring.mail.default-encoding=UTF-8
[INFO ] 2019-09-11 15:35:03.475 [main] PropertiesLogger - spring.mail.host=smtp.gmail.com
[INFO ] 2019-09-11 15:35:03.487 [main] PropertiesLogger - spring.mail.password=${MAIL_PASSWORD} OVERRIDDEN to *****
[INFO ] 2019-09-11 15:35:03.488 [main] PropertiesLogger - spring.mail.port=587
[INFO ] 2019-09-11 15:35:03.489 [main] PropertiesLogger - spring.mail.properties.mail.smtp.auth=true
[INFO ] 2019-09-11 15:35:03.489 [main] PropertiesLogger - spring.mail.properties.mail.smtp.starttls.enable=true
[INFO ] 2019-09-11 15:35:03.490 [main] PropertiesLogger - spring.mail.properties.mail.smtp.starttls.required=true
[INFO ] 2019-09-11 15:35:03.491 [main] PropertiesLogger - spring.mail.protocol=smtp
[INFO ] 2019-09-11 15:35:03.506 [main] PropertiesLogger - spring.mail.test-connection=false
[INFO ] 2019-09-11 15:35:03.507 [main] PropertiesLogger - spring.mail.username=${MAIL_LOGIN} OVERRIDDEN to *****
[INFO ] 2019-09-11 15:35:03.508 [main] PropertiesLogger - spring.servlet.multipart.max-file-size=1024MB
[INFO ] 2019-09-11 15:35:03.509 [main] PropertiesLogger - spring.servlet.multipart.max-request-size=1024MB

EDITED: After adding the messages_ru_RU.properties file, the standard language became Russian, but when I choose to switch to English, the language does not switch back ...

enter image description here

EDITED: in html language set normal after switch enter image description here

enter image description here

1 Answers1

0

I'm create new Dockerfile for my project from ubuntu and all work.

FROM ubuntu:19.10

EXPOSE 8080

MAINTAINER Zemtsov Alexey Vladimirovich <*****>

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get -y update
RUN apt-get -y upgrade

RUN apt-get install -y locales
RUN sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen
RUN dpkg-reconfigure --frontend=noninteractive locales
RUN update-locale LANG=ru_RU.UTF-8

ENV LANG ru_RU.UTF-8
ENV LANGUAGE ru_RU:ru
ENV LC_ALL ru_RU.UTF-8

RUN apt-get install -y openjdk-8-jdk

ARG CONTEXT_PATH
ARG DB_HOST
ARG DB_PORT
ARG DB_NAME
ARG DB_USER
ARG DB_PASSWORD
ARG MAIL_LOGIN
ARG MAIL_PASSWORD

WORKDIR /usr/app/webapp

ADD target/webapp-*.jar webapp.jar

ENTRYPOINT java -jar webapp.jar

CMD /bin/sh -c