2016-09-03 2 views
3

私は既存のApache/phpサイトをドッカーに移行しようとしており、サイトのローカライズに問題があります。 コードを掘り下げると、問題は、Dockerのインストール時にsetLocaleがfalseを返すことです(既存のサイトではtrue)。 既存のサイトでうまく動作し、Dockerのインストールに失敗するPHPテストです。php on docker:setLocaleを使用

FROM php:5-apache 

RUN apt-get update && apt-get install -y locales && apt-get clean 
RUN locale-gen fr_FR && locale-gen zh_TW && locale-gen tr_TR && locale-gen ru_R$ 
RUN docker-php-ext-install gettext 

RUN a2enmod rewrite && a2enmod headers 

は私が間違って何をやっている:ここで

<?php 
$locale = "fr_FR"; 
putenv("LC_ALL=$locale"); 
$ok = setlocale(LC_ALL, $locale); 
if ($ok) { 
    echo "success"; 
} else { 
    echo "failure"; 
} 
?> 

は私ドッカーファイルのですか?

---編集---

PatxiGortázarが私にここ :-)右方向を与えるあなたはより多くのロケールが必要な場合は、あなたがする必要があります固定ドッカファイル

FROM php:5-apache 

RUN apt-get update && apt-get install -y locales && apt-get clean 
RUN sed -i -e 's/# fr_FR ISO-8859-1/fr_FR ISO-8859-1/' /etc/locale.gen && \ 
    dpkg-reconfigure --frontend=noninteractive locales 
RUN docker-php-ext-install gettext 

RUN a2enmod rewrite && a2enmod headers 

ですあなたの容器に/etc.locale.genを見て、ラインごとのため

sed -i -e 's/# locale/locale/' /etc/locale.gen && \ 

を追加し、あなたが必要とするロケール(#ロケールを仮定することで/ EC行の内容です3210 tc/locale.genに必要なロケールが含まれています)。

答えて

2

あなたのロケールを再設定する必要があります。

RUN locale-gen fr_FR.UTF-8 && dpkg-reconfigure locales 

そして、あなたが必要な場合があります(私は正確にどのような状況の下で知らない)/etc/environmentLC_ALLLANGUAGE環境変数を追加する:

LC_ALL=... 
LANGUAGE=... 
+0

ありがとうございます、あなたは私に正しい方向を与えました。 locale-genが動作しないようですが、spkg-reconfigureのロケールがトリックでした(私の質問で私の編集を見てください)。 私のPHPの例のように、LC_ALLをPHPスクリプトで設定する必要があります。 –

+0

Thx、nice solution ... – quexer69

+0

php:* - apacheの画像については、ロケールジェネルでロケールを生成することはできないようですが、/etc/locales.genファイルを編集してからlocale-genを実行する必要があります – monofone

0

DockerのUbuntuはロケールと一緒に出荷されていません。理由はわかりません。これをDockerファイルに追加する必要があります:

RUN locale-gen fr_FR.UTF-8 
ENV LANG fr_FR.UTF-8 
ENV LANGUAGE fr_FR:en 
ENV LC_ALL fr_FR.UTF-8 

これはそれを行う必要があります。

+0

答えてくれてありがとう。残念なことに、それは動作しません。 –