2016-07-21 15 views
0

を変換する方法:私は、次したテンプレート(Drupalの)php.tplファイルで、この日付フォーマット

をしかし、サイトは外国語である場合には、翻訳を印刷しません。どのように翻訳するのですか? t()関数を使う?もしそうなら、それをどのように書き換えるのですか?

何かすべての助けがありがとうございます。 :)

アップデート:以下

Isemiの第二ソリューションではなく、今年のYを出力年を除いて正常に動作します。マイナー調整とコードは次のようになります。

$dateF = t(date('F', $comment->created)); 
$datej = t(date('j', $comment->created)); 
$dateY = t(date('Y', $comment->created)); 
print "{$datej} {$dateF} {$dateY}" . t(' at ') . date('H:i', $comment->created); 

「には、」それは別の翻訳可能な文字列になって翻訳することは容易です。 "a"の前と "t"の後のスペースに注意してください。

+0

言語変換に関しては、「at」という単語を削除するだけです。なぜなら、日付と時刻の表示は、コメントが作成された瞬間を自然に示しているからです。 –

+0

また、クライアントが独自のロケールを知っているので、javascriptを使用して日付/時刻を表示することをお勧めします。すべてのサーバーは、内部時間値を渡す必要があります。 –

答えて

1

date()関数は、サーバのロケールを使用しています。あなたは現在のプロセスでそれを変更する必要があります。これは扱いにくく、すべての設定で動作しません。

setlocale(LC_TIME, 'it_IT'); // Depends on the client. 

$datel = strftime("%F %j, %Y at %H:%i:%s", $comment->created); 

が、離れて、正しいコードから、あなたはまだ翻訳の問題を持っている(私は%Fと%Jについてあまりよく分からない):

その後、目的のロケール文字列を取得するべきです'at'、私は思う。

別の方法としては、日付の区分を取得し、部品によってそれを翻訳することができます

$dateF = t(date('F', $comment->created)); 
$datej = t(date('j', $comment->created)); 
$dateY = date('Y', $comment->created); // Numeric year not translated. 

print "{$dateF} {$datej}, {$dateY} " . t('at') 
     . date('h:i', $comment->created); 

ます。また、国際空港の拡張を使用することができ、this answerを参照してください。

+1

私はあなたの2番目のオプションを使いました。私は年ではなく "Y"を印刷するので、Y(年)に問題がありました。ですから、この小さな調整で、$ dateF = t(date( 'F'、$ comment-> created)); $ datej = t(date( 'j'、$ comment-> created)); $ dateY = t(日付( 'Y'、$ comment-> created)); "{$ date} {$ date}}"を印刷します。 t( 'at')。日付( 'H:i'、$ comment-> created); – user14666

+0

はい、申し訳ありませんが、私はdate()関数に 'Y'を送るのを忘れていました。修正されました。 – LSerni

関連する問題