Recently I have noticed that the output of the following code shows the month in the wrong language (English instead of German):
date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, 'de_DE.utf8');
$date_now = date('Y-m-d');
echo strftime('%B %Y', strtotime($date_now));
This can be solved by installing the required language in the docker container. Unfortunately there is a bug which prevents that the languages can be easy activated by locale-gen <lang-code>
. So you have to enable them in /etc/locale.gen
first and then generate them with locale-gen
. This code solves the problem:
FROM php:7-apache
[...]
# install localisation
RUN apt-get update && \
# locales
apt-get install -y locales
# enable localisation and generates localisation files
RUN sed -i -e 's/# de_DE ISO-8859-1/de_DE ISO-8859-1/' /etc/locale.gen && \ # to uncomment the lange
sed -i -e 's/# <your lang code from locale.gen>/<your lang code from locale.gen again>/' /etc/locale.gen && \
locale-gen
[...]
Or you could install all available languages:
FROM php:7-apache
[...]
# install localisation
RUN apt-get update && \
# locales
apt-get install -y locales locales-all
[...]
If you perform a dry run in the container, you must restart Apache for see the changes.