78

関数が目的のsetlocale()言語(ドイツ語)を設定していません。


目標は、月の名前を出力することです。

これは、これまでの試行での私のテストコードです。

<?php

date_default_timezone_set('Europe/Berlin');
setlocale(LC_ALL, 'de_DE.utf8');
// Or
setlocale(LC_ALL, 'de_DE@euro');
// Or
setlocale(LC_ALL, 'de_DE');
// Or
setlocale(LC_ALL, 'de');
// Or
setlocale(LC_ALL, 'ge');


echo strftime('%B');

出力:

六月

それ以外の

ジュニ

助言がありますか?

  • sshやその他のシェルアクセスがありません。
  • スクリプトはLinuxサーバーで実行されています。

PHPバージョン5.6

4

14 に答える 14

109

スクリプトを実行しているサーバーにドイツ語のロケールがインストールされていない可能性が非常に高いです-サーバーへのシェルアクセスを持っていますか? それから試してください

locale -a

インストールされているロケールを確認します。こちらもご覧ください

于 2012-06-06T07:34:52.093 に答える
35

ここに来て、date()月と曜日の名前がローカライズされていないものを探している人のために:

==注意してください==

date() は月/日の名前を英語でのみ返すことができ、他の言語の翻訳を提供することはできません。

代わりstrftime()に使おう!

于 2016-11-24T00:10:03.937 に答える
13

これを試してください:

date_default_timezone_set('Europe/Berlin');
$loc=setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo strftime('%B');
于 2012-06-06T07:38:43.440 に答える
13

このソリューションは、サーバーへのシェル アクセスがない場合に役立ちます。

シェルにアクセスできる場合は、Benjamin Seiller の回答が最適です。

他の可能性 (シェル) がないので、IntlDateFormatter クラスを使用して、PHP のみで解決策を見つけました。

<?php

// Example vars
$month = '6';
$year = '2014';

$fmt = new IntlDateFormatter('de_DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'Europe/Berlin',
    IntlDateFormatter::GREGORIAN);

$lastMonth = mktime(0, 0, 0, $month -1, 1, $year);

$showLastMonth =  $fmt->format($lastMonth);
echo $showLastMonth;
于 2012-06-06T07:52:18.197 に答える
7

'setlocale' sais の PHP マニュアル ページ:

注: setlocale() の戻り値は、PHP が実行されているシステムによって異なります。システムの setlocale 関数が返すものとまったく同じものを返します。

root アクセス (debian) がある場合の解決策は次のとおりです。

編集

/etc/locale.gen

使用する必要があるロケールを追加/削除できます。ファイルを保存した後、次を実行します。

locale-gen

そしてあなたは大丈夫なはずです。私のサーバーでは、変更を確認するために Apache を再起動する必要がありました。

于 2014-05-12T15:12:30.387 に答える
5
apt-get install -y locales locales-all
于 2019-07-10T07:41:26.670 に答える
4

基盤となる OS"de_DE"などによっては、文字列が間違っている可能性があります。

Windows では、次のリストを参照してください。

通常、Win では "DEU" または "GERMAN" です。

すでに述べた:

Linux では、シェル コマンドを使用してすべてのロケールを表示できます。

locale -a
于 2014-06-26T08:17:51.820 に答える