Het vertalen van datums binnen PHP kan lastig zijn. Het probleem is dat de DateTime class en date() functie geen ondersteuning bieden voor meertaligheid. Hierdoor moet er gebruik worden gemaakt van alternatieve functies binnen PHP om de datum te kunnen vertalen naar het Nederland. In deze post laat ik drie methodes zien om datums te vertalen naar het Nederlands.
Vertalen met een array
Om af te trappen beginnen we met een de meeste simpele manier. Met het vervangen van de Engelse teksten naar het Nederland door middel van een array.
$months = [
'January' => 'januari',
'February' => 'februari',
'March' => 'maart',
'April' => 'april',
'May' => 'mei',
'June' => 'juni',
'July' => 'juli',
'August' => 'augustus',
'September' => 'september',
'October' => 'oktober',
'November' => 'november',
'December' => 'december'
];
$weekdays = [
'Monday' => 'maandag',
'Tuesday' => 'dinsdag',
'Wednesday' => 'woensdag',
'Thursday' => 'donderdag',
'Friday' => 'vrijdag',
'Saturday' => 'zaterdag',
'Sunday' => 'zondag'
];
// Sunday 9 April 2017 17:40:09
$datetime = date('l j F Y H:i:s');
$datetime = str_replace(array_keys($months), array_values($months), $datetime);
$datetime = str_replace(array_keys($weekdays), array_values($weekdays), $datetime);
// zondag 9 april 2017 17:40:09
echo $datetime;
Vertalen met strftime() – DEPRECATED
De strftime() functie sinds PHP 8.1 aangemerkt als verouderd. Deze functie zal in de toekomst dan ook worden verwijderd. Het is onverstandig om deze functie vandaag de dag nog te gebruiken. Een alternatief is dan ook om gebruik te maken van IntlDateFormatter::format.
Met strftime was het mogelijk om datums te vertalen in elke gewenste taal.
setlocale(LC_ALL, "nl_NL");
// zondag 9 april 2017 17:40:09
echo strftime("%A %e %B %Y %T");
Datums vertalen met IntlDateFormatter()
Tot slot een alternatieve manier voor het vertalen van datums naar het Nederlands. In tegenstelling tot bovenstaande functie is het met IntlDateFormatter mogelijk om gebruik te maken van de DateTime class.
$fmt = new IntlDateFormatter(
locale: "nl_NL",
dateType: IntlDateFormatter::LONG,
timeType: IntlDateFormatter::MEDIUM,
timezone: 'Europe/Amsterdam',
calendar: IntlDateFormatter::GREGORIAN
);
// zondag 9 april 2017 17:40:09
echo $fmt->format(new DateTime);
Mocht je meer PHP tips willen lezen dan heb ik een kleine verzameling van verschillende tips voor jullie. Klik op de onderstaande knop om deze te bekijken: