10

私のコード:

setlocale(LC_TIME, 'ca_ES');
echo strftime("%#d %B", strtotime($ticket->date_created));

次のようなものを出力します。

28 August

私の期待の代わりに:

28 Agost

カタロニア語(から設定setlocale())なので、「Agost」を期待しています。

これはどのようsetlocaleに機能するstrftimeことになっていますか?

参考:私のローカル開発マシンはWindows 7で、ロケールに設定されています:en-PH

4

7 に答える 7

22

ロケール名はWindowsでは異なります。デフォルトは英語のようです。

完全な長さの名前を試してください(いくつか試してみると、最初に見つかった名前が選択されます):

setlocale(LC_TIME, 'ca_ES', 'Catalan_Spain', 'Catalan');

あなたはこの表を見るかもしれません、それは役に立つかもしれません:http: //docs.moodle.org/dev/Table_of_locales

于 2012-09-24T13:37:13.407 に答える
8

サーバーに必要なロケールをインストールする必要があります。

  1. サーバーにSSHで接続する
  2. インストールされているロケールを確認します。locale -a
  3. ロケールがない場合は、次のようにインストールします。sudo locale-gen ca_ES
  4. サーバーのロケールを更新します。sudo update-locale
  5. 変更を有効にするためにapacheを再起動します。sudo service apache2 restart

それだ!

于 2018-08-24T06:17:43.227 に答える
6

Ubuntu 14.04ではsetlocale(LC_TIME, 'de_DE.UTF8');、ドイツ語の月の形式/名前を取得するためのトリックを行いました:)

于 2015-12-09T14:05:03.190 に答える
3

Debian 9setlocale(LC_TIME, 'fr_FR.UTF8');では、フランス語でフォーマットされた日/月の表示をうまく取得することができました。次の順序でロケールがインストールされていることを確認してください。

apt-getインストールロケール

dpkg-ロケールを再構成します

于 2017-11-17T13:55:37.767 に答える
2

strftime日付形式のローカライズされたバージョンを提供します。予期しない結果が発生した場合は、おそらく、期待しているローカライズされたバージョンがシステムに存在していません。

私はWindowsの経験がありませんが、Debian Linuxサーバーに、必要なローカライズされた文字列をインストールする必要がありました。

于 2012-09-24T13:35:09.633 に答える
1

私のように、strftimeサーバーの制限のためにまだ機能できないすべての人にとって...完璧ではありませんが、機能します。

$months[1] = "gennaio";
$months[2] = "febbraio";
$months[3] = "marzo";
$months[4] = "aprile";
$months[5] = "maggio";
$months[6] = "giugno";
$months[7] = "luglio";
$months[8] = "agosto";
$months[9] = "settembre";
$months[10] = "ottobre";
$months[11] = "novembre";
$months[12] = "dicembre";

// giorni
$weekdays[0] = "domenica";
$weekdays[1] = "lunedì";
$weekdays[2] = "martedì";
$weekdays[3] = "mercoledì";
$weekdays[4] = "giovedì";
$weekdays[5] = "venerdì";
$weekdays[6] = "sabato";

function strftimeIta($format, $timestamp){

    global $weekdays, $months;

    preg_match_all('/%([a-zA-Z])/', $format, $results);

    $originals = $results[0];
    $factors = $results[1];


    foreach($factors as $key=>$factor){
        switch($factor){
            case 'a':
                /*** Abbreviated textual representation of the day ***/
                $n = date('w', $timestamp); // number of the weekday (0 for sunday, 6 for saturday);
                $replace = ucfirst($weekdays[$n]);
                $replace = substr($replace, 0, 3);
                break;
            case 'A':
                /*** Full textual representation of the day ***/
                $n = date('w', $timestamp); // number of the weekday (0 for sunday, 6 for saturday);
                $replace = ucfirst($weekdays[$n]);
                break;
            case 'h':
            case 'b':
                /*** Abbreviated month name ***/
                $n = date('n', $timestamp); // Numeric representation of a month, without leading zeros
                $replace = ucfirst($months[$n]);
                $replace = substr($replace, 0, 3);
                break;
            case 'B':
                /*** Full month name ***/
                $n = date('n', $timestamp); // Numeric representation of a month, without leading zeros
                $replace = ucfirst($months[$n]);
                break;
            default:
                /*** Use standard strftime function ***/
                $replace = strftime("%".$factor, $timestamp);
                break;
        }
        $search = $originals[$key];
        $format = str_replace($search, $replace, $format);
    }
    return $format;
}
于 2017-04-06T10:14:08.040 に答える
0

これは古い質問だと思いますが、とにかく貢献したいと思いました。

作業中のサーバーにSSHで接続できる場合は、次のように記述します。locale -aすると、使用可能なロケールを確認できます。言語がリストされていない場合は、インストールする必要があります。

私にとって、私は探していたものを見ました:nb_NO.utf8リストで、それで私はそれが書かれた方法でそれを正確に書きました:setlocale( LC_ALL, 'nb_NO.utf8' )そしてそれは私のために働きました。

于 2017-12-15T11:54:22.793 に答える