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.
Formats in
The last fixed row uses plain format(), which is never translated. Week starts on
in this locale (startOfWeek()).
diffForHumans()
calendar()
Laravel's Number helper
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 inen_US. - Assuming weeks start on Monday. They start on Sunday in
en_USandpt_BR, and on Saturday inar. - 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
Other free tools
Pluralization Tester
Pick a language, type a number, see which CLDR plural category applies — live, via your browser's Intl.PluralRules.
trans_choice() Tester
Paste a Laravel pluralization string, pick a locale and a count, and see exactly which form Laravel returns, using Laravel itself.
ICU MessageFormat Tester
Write an ICU message with plural, select and number arguments and render it in any locale with the real ICU library.
Locale Code Lookup
Check any BCP 47 locale code: language, region, script, text direction, plural forms and the Laravel folder name to use.
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.