PHP'de Türkçe tarih yazdırma işi.



3 dakikalık okuma
August 16, 2017

Bir önceki yazımda PHP’de uzun tarih yazdırmayı anlatmıştım; ama bu durum sadece İngilizce için geçerli. Peki diğer diller için ne yapabiliriz ? Ya da sadece Türkçe’ye özgü böyle bir şey hazırlayabilir miyiz? 2 sorunun cevabı da evet.

  1. Türkçe ya da başka dillerde tarihi uzun formatta yazdırma:
setlocale(LC_TIME, "turkish"); //başka bir dil içinse burada belirteceksin.
setlocale(LC_ALL,'turkish'); //başka bir dil içinse burada belirteceksin.
echo iconv('latin5','utf-8',strftime(' %d %B %Y %A ',strtotime('2017-08-15 23:12:10')));
//çıktı:  15 Ağustos 2017 Salı


echo iconv('latin5','utf-8',strftime(' %d %B %Y %A %H:%M:%S ',strtotime('2017-08-15 23:12:10')));
//çıktı:  15 Ağustos 2017 Salı 23:12:10

Halen olmadıysa sunucuda Türkçe dil paketi kurulu değildir. Bunu öğrenmek için terminal ile sunucunuza bağlanın ve:

locale -a

Eğer orada tr_TR.utf8 yada turkish vs. gibi şeyler göremezseniz, sunucuya Türkçe dil paketini bizim yüklememiz gerek. Bunun için:

sudo apt-get install language-pack-tr

yazarak Türkçe dil paketini yükleyelim. Sonra sunucuya restart atmayı unutmayın ki aktif hale geçsin. Bunun için -ben php 7.1 kullanıyorum. fpm aktif- Bu yüzden şöyle restart atıyorum:

sudo service php7.1-fpm restart

Eğer VPS üzerinde WHM CPANEL varsa, oradan da restart atabilirsiniz. Ya da başka yollarla…

  1. Sadece Türkçe için bir çözüm üretelim:

Bu arada Yunus Başşahan’a yardımı için teşekkürler.


function turkcetarih_formati($format, $datetime = 'now'){ $z = date("$format", strtotime($datetime)); $gun_dizi = array( 'Monday' => 'Pazartesi', 'Tuesday' => 'Salı', 'Wednesday' => 'Çarşamba', 'Thursday' => 'Perşembe', 'Friday' => 'Cuma', 'Saturday' => 'Cumartesi', 'Sunday' => 'Pazar', 'January' => 'Ocak', 'February' => 'Şubat', 'March' => 'Mart', 'April' => 'Nisan', 'May' => 'Mayıs', 'June' => 'Haziran', 'July' => 'Temmuz', 'August' => 'Ağustos', 'September' => 'Eylül', 'October' => 'Ekim', 'November' => 'Kasım', 'December' => 'Aralık', 'Mon' => 'Pts', 'Tue' => 'Sal', 'Wed' => 'Çar', 'Thu' => 'Per', 'Fri' => 'Cum', 'Sat' => 'Cts', 'Sun' => 'Paz', 'Jan' => 'Oca', 'Feb' => 'Şub', 'Mar' => 'Mar', 'Apr' => 'Nis', 'Jun' => 'Haz', 'Jul' => 'Tem', 'Aug' => 'Ağu', 'Sep' => 'Eyl', 'Oct' => 'Eki', 'Nov' => 'Kas', 'Dec' => 'Ara', ); foreach($gun_dizi as $en => $tr){ $z = str_replace($en, $tr, $z); } if(strpos($z, 'Mayıs') !== false && strpos($format, 'F') === false) $z = str_replace('Mayıs', 'May', $z); return $z; }

Kullanımı:

<?php
echo turkcetarih_formati('j F Y','2017-08-15');  //Çıktı: 15 Ağustos 2017

echo turkcetarih_formati('j F Y , l','2017-08-15');  //Çıktı: 15 Ağustos 2017 , Salı

?>

Etiketler: