2012-03-23 15 views
0

Webアプリケーションの1つでは、ユーザーは優先言語を選択できるため、ユーザーごとにロケールを動的に設定する必要があります。基本的には:他のページの読み込みごとにロケールが変更される

function i18n_date($format, $date, $locale) { 
    setlocale(LC_TIME, $locale); 
    return strftime($format, $date); 
} 

問題は、他のすべてのページのロードは、ロケールがsetlocale()strftime()の間で、デフォルトに変更されていることです。 the PHP docsによれば、これは「Windowsの上のIISやApacheなどのマルチスレッドサーバAPI」から予想されなければならないが、私たちのサーバーApacheのビルドには、非スレッド化されています

Server version: Apache/2.2.17 (Ubuntu) 
Server built: Nov 3 2011 02:13:53 
Server's Module Magic Number: 20051115:25 
Server loaded: APR 1.4.2, APR-Util 1.3.9 
Compiled using: APR 1.4.2, APR-Util 1.3.9 
Architecture: 64-bit 
Server MPM:  Prefork 
    threaded:  no 
    forked:  yes (variable process count) 
Server compiled with.... 
-D APACHE_MPM_DIR="server/mpm/prefork" 
-D APR_HAS_SENDFILE 
-D APR_HAS_MMAP 
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) 
-D APR_USE_SYSVSEM_SERIALIZE 
-D APR_USE_PTHREAD_SERIALIZE 
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT 
-D APR_HAS_OTHER_CHILD 
-D AP_HAVE_RELIABLE_PIPED_LOGS 
-D DYNAMIC_MODULE_LIMIT=128 
-D HTTPD_ROOT="/etc/apache2" 
-D SUEXEC_BIN="/usr/lib/apache2/suexec" 
-D DEFAULT_PIDLOG="/var/run/apache2.pid" 
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status" 
-D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock" 
-D DEFAULT_ERRORLOG="logs/error_log" 
-D AP_TYPES_CONFIG_FILE="mime.types" 
-D SERVER_CONFIG_FILE="apache2.conf" 

それでは、なぜこの出来事はありますか?

答えて

2

setlocale()は永続的ではなく、必要なときに毎回設定する必要があります。

+0

質問 – Znarkus

+0

で私の関数 'i18n_date'を見てください申し訳ありませんあなたの質問を少し誤解しました。あなたは最近ロケールをインストールしましたか?その後、Apacheを再起動すると役立ちます。それ以外の場合は、文字列を返すときにsetlocale()の出力をダンプします。これはおそらくあなたを助けるかもしれません。 –

0

ロケールが永続的でない場合は、PERSISTENT(SESSIONが何かのベルに???)という何かを使用します。

ユーザーがロケールを選択すると、$ _SESSION結合配列に保存されます。

ページを読み込むたびに、まず変数が存在するかどうかを確認します。そうであれば、それ以外のロケールを設定してください。

if (isset($_SESSION['locale'])){ 
    setlocale($_SESSION['locale']); 
} 
else{ 
    //ask for the locale or whatever you need to do 
} 
+0

ありがとう、私はあなたが問題を理解するとは思わない。 "問題は、setlocale()とstrftime()の間で、他のすべてのページがロードされ、ロケールがデフォルトに変更されることです。*" – Znarkus

関連する問題