See your dates in any locale before you ship

Pick one of Carbon's 824 locales and a date. Every string below is produced by Carbon on our server, the same library Laravel uses for dates, so what you see is what your views will print.

Try:

Formats in

The last fixed row uses plain format(), which is never translated. Week starts on in this locale (startOfWeek()).

diffForHumans()

calendar()

Months: MMMM / MMM / D MMMM

Weekdays: dddd / ddd / dd

format(), translatedFormat() and isoFormat()

Carbon has three ways to turn a date into text, and only two of them are localized. format() is PHP's own DateTime::format() and always prints English names, whatever the locale: the table above shows "Saturday 14 March 2026" next to the translated rows. translatedFormat() takes the same PHP letters (l j F Y) and translates the day and month names. isoFormat() uses Moment.js-style tokens (dddd D MMMM YYYY) and adds locale-aware presets: LL, LLL and LLLL put day, month and year in the order each language expects, so "March 14, 2026" in English becomes "14. März 2026" in German. Use the presets when you do not want to own the word order for every language.

Month names are not one word per month

In Polish, Russian, Czech and other languages, a month alone and a month inside a date are different grammatical forms. Carbon knows this: isoFormat('MMMM') gives "marzec", while isoFormat('D MMMM') gives "14 marca". Pick pl above and compare the first and last month columns. Building a date by concatenating a day number with a month name from a lang file gets this wrong; let Carbon format the whole date instead.

Getting the locale into Carbon in Laravel

Carbon ships a Laravel service provider that listens for Laravel's LocaleUpdated event, so after App::setLocale('pl') a plain now()->isoFormat('LL') is already Polish. To format one date in a different locale, call ->locale('pl') on it, which returns the date with that locale without touching the global setting. Unlike Laravel's plural rules, Carbon accepts pt-BR and normalises it to pt_BR. Formatting does not change the timezone: this page treats the input as UTC, and in your app you would call ->setTimezone($user->timezone) before formatting.

Relative times and calendar()

In your app, $comment->created_at->diffForHumans() compares with the current time. So the table can be reproduced for any date, this page compares each offset with the date you picked instead, using the same "ago" and "from now" wording. calendar() is the friendlier sibling: "Yesterday at 3:09 PM" or "Wczoraj o 15:09" for nearby days, the weekday name within the week, and the locale's short date (the L preset) beyond that, which is why the two-week row prints a plain date.

Common mistakes

  • Using format('F') in a Blade view and wondering why month names stay English.
  • Hardcoding 'd/m/Y' for everyone. isoFormat('L') gives 14.03.2026 in Polish and 03/14/2026 in en_US.
  • Assuming weeks start on Monday. They start on Sunday in en_US and pt_BR, and on Saturday in ar.
  • Putting relative times in lang files. diffForHumans() already handles each language's plural forms, such as "2 godziny temu" against "5 minut temu".

The full walkthrough, with timezones and lang file advice, is in Localized dates in Laravel with Carbon. For numbers and money, see localizing numbers and currency in Laravel, and the glossary entry on date and time localization. The language guides cover date conventions for German, French, Spanish, Polish, Japanese and Arabic.

Frequently asked questions

Why does format() print English month names in another locale?

format() is PHP's DateTime::format() and is never translated. Use translatedFormat() with the same format letters, or isoFormat() with Moment-style tokens, and Carbon will use the locale's day and month names.

Should I use isoFormat() or translatedFormat()?

translatedFormat() is the smallest change from format(), since it keeps PHP's letters. isoFormat() adds the locale presets L, LL, LLL and LLLL, which put day, month and year in the order each language expects, so you do not have to maintain a format string per language.

How does Carbon get the locale in a Laravel app?

Carbon registers a Laravel service provider that listens for the LocaleUpdated event, so App::setLocale() also sets Carbon's locale. To format a single date in another language, call ->locale('de') on it; the global locale is left alone.

Why is the Polish month name different inside a date?

Polish, Russian and several other languages use a different grammatical case for a month inside a date. Carbon handles it: isoFormat('MMMM') returns marzec, while isoFormat('D MMMM') returns 14 marca. Format the whole date with Carbon instead of joining a day number and a month name yourself.

Does the preview convert timezones?

No. The date is read as UTC and only formatted, because localization and timezones are separate steps. In your app, convert first with ->setTimezone($timezone), then format.

Useful? Link to it

The tool is free and stays free. Paste this into a README, a wiki page or a forum answer.

<a href="https://langsyncer.com/tools/carbon-date-format-preview">Carbon Localized Date Preview</a> by LangSyncer

Translations that ship as fast as your code

Dates are handled by Carbon. The words around them live in your lang files: LangSyncer translates them with AI, tracks what each language is missing and publishes changes without a deploy.

We'd like to use analytics and marketing cookies to understand how the site is used. They stay off unless you accept them. Cookie Policy