8

でローカライズされた日付文字列を生成しようとしていましたがstrftime、使用するプレースホルダーは です%x。言語/ロケールは ですがsetlocale(LC_ALL, array('jp','japanese'))、どちらのロケールも使用できないため、不適切な文字を含む文字列が生成されました。次に、ロケールをインストールし、それja_JP.utf8を配列の最初の要素として指定すると、日付の書式設定の問題が解決されました。

私の質問は、インストールされているロケールに常に依存する必要がありますか? root アクセス権があるボックスにそれらをインストールする方法は知っていますが、アクセス権がない場合はどうなりますか?

私は信じてZend_LocaleおりZend_Translate、まったく依存していませんsetlocaleが、どういうわけか内部で行っているため、エンタープライズレベルのアプリケーションでは実際には実現できないという印象を受けます。

私はおそらく自分のアプリケーションでZend_LocaleandZend_Translateを使用できることを知っていますが、少なくとももう 1 年は PHP4 をサポートする必要があるため、それらだけに頼ることはできません。

4

3 に答える 3

8

私の setlocale() の調査が正しければ、答えは「いいえ」と「いいえ」です。インストールされているロケールの範囲は名前と同様にさまざまであり、最終的に特定のロケールが利用可能かどうかを完全に確実に予測することはできません。

于 2009-12-21T19:09:53.357 に答える
7

setlocale の戻り値を確認し、少なくともインストールされていることを確認できます。そうしないと、サイレント エラーが発生します。

setlocale(LC_ALL, 'en_US') or die('Locale not installed');
于 2015-05-07T02:42:35.907 に答える
0

実行可能です、はい。賢明ではありません!

于 2009-12-21T19:19:01.170 に答える