Find My Locale
Your locale code tells Power Automate how to format numbers, dates, and currency.
Last updated
Based on your browser's language setting.
Which date format do you see?
Your browser gives a few different hints. Pick the format that matches what you would write by hand for March 14, 2026.
What is a locale, anyway?
A short code that tells software which language and regional conventions to use. Same input, different output. Pick the wrong one in your flow and the number or date looks broken.
| Input | en-US |
en-GB |
en-SG |
de-DE |
en-IN |
|---|---|---|---|---|---|
1234.5
as N2 number
|
1,234.50 | 1,234.50 | 1,234.50 | 1.234,50 | 1,234.50 |
| 2026-03-14 short date | 3/14/2026 | 14/03/2026 | 14/03/2026 | 14.3.2026 | 14/3/2026 |
| 1234.5 as currency | $1,234.50 | £1,234.50 | $1,234.50 | 1.234,50 € | ₹1,234.50 |
Anatomy of a locale code
A locale code is built from up to three parts joined by hyphens. Most of the time you only need the first two: a language and a region.
Lowercase, usually two letters (ISO 639). It sets the
words: the translated month and day names.
pt is Portuguese, de is German,
ja is Japanese.
Uppercase, two letters (ISO 3166). It sets the
conventions: date order, decimal separator, and
currency symbol. PT is Portugal, BR is
Brazil, US is the United States.
Four letters, title case (ISO 15924). Only needed when a language is
written in more than one alphabet. zh-Hans is Simplified
Chinese, zh-Hant is Traditional.
Same language, different region.
en-US writes 3/14/2026 and
$1,234.50; en-GB writes
14/03/2026 and £1,234.50. The words
stay English, but the date order and the currency flip.
Same region, different language.
Keep the region and switch the language and the numbers stay put while
the words change: the month March becomes
März, mars, or março.
Try it with your data
Pick a locale, type a value, and copy the Power Automate expression. Defaults to the best guess for your browser.
formatNumber(1234.5, 'N2', 'en-US')
formatDateTime('2026-03-14T09:30:00Z', 'd', 'en-US')
formatNumber(1234.5, 'C2', 'en-US')
formatNumber uses N2 for plain numbers and
C2 for currency. formatDateTime uses
d for short date. Swap to D for long date,
g for short date + time, or a custom pattern like
yyyy-MM-dd.
Format codes explained
The middle argument in formatNumber and
formatDateTime is a format code. Here are the ones you will
reach for most, shown for en-US. Swap the locale and the
same code adapts to that region.
formatNumber codes
| Code | Meaning | 1234.5 becomes |
|---|---|---|
N0 | Number, no decimals | 1,235 |
N2 | Number, two decimals | 1,234.50 |
C2 | Currency, the locale's own | $1,234.50 |
F2 | Fixed, no thousands separator | 1234.50 |
#,##0.00 | Custom pattern | 1,234.50 |
formatDateTime codes
| Code | Meaning | 2026-03-14 09:30 becomes |
|---|---|---|
d | Short date | 3/14/2026 |
D | Long date | Saturday, March 14, 2026 |
g | Short date and time | 3/14/2026 9:30 AM |
MMMM yyyy | Month and year | March 2026 |
dddd | Day name | Saturday |
yyyy-MM-dd | Sortable custom | 2026-03-14 |
Common locale codes
Click any code to copy it.
| Locale | Region | Date sample | Number sample |
|---|---|---|---|
| Most popular | |||
| United States | 3/14/2026 | 1,234.50 | |
| United Kingdom | 14/03/2026 | 1,234.50 | |
| Singapore | 14/03/2026 | 1,234.50 | |
| Germany | 14.3.2026 | 1.234,50 | |
| India | 14/3/2026 | 1,234.50 | |
| Canada | 2026-03-14 | 1,234.50 | |
| Australia | 14/03/2026 | 1,234.50 | |
| France | 14/03/2026 | 1 234,50 | |
| Netherlands | 14-3-2026 | 1.234,50 | |
| China | 2026/3/14 | 1,234.50 | |
| Americas | |||
| United States | 3/14/2026 | 1,234.50 | |
| Canada | 2026-03-14 | 1,234.50 | |
| Canada (French) | 2026-03-14 | 1 234,50 | |
| Mexico | 14/3/2026 | 1,234.50 | |
| Brazil | 14/03/2026 | 1.234,50 | |
| Europe | |||
| United Kingdom | 14/03/2026 | 1,234.50 | |
| France | 14/03/2026 | 1 234,50 | |
| Germany | 14.3.2026 | 1.234,50 | |
| Spain | 14/3/2026 | 1234,50 | |
| Italy | 14/03/2026 | 1234,50 | |
| Netherlands | 14-3-2026 | 1.234,50 | |
| Portugal | 14/03/2026 | 1234,50 | |
| Poland | 14.03.2026 | 1234,50 | |
| Sweden | 2026-03-14 | 1 234,50 | |
| Norway | 14.3.2026 | 1 234,50 | |
| Denmark | 14.3.2026 | 1.234,50 | |
| Russia | 14.03.2026 | 1 234,50 | |
| Türkiye | 14.03.2026 | 1.234,50 | |
| Asia-Pacific | |||
| Australia | 14/03/2026 | 1,234.50 | |
| New Zealand | 14/03/2026 | 1,234.50 | |
| India | 14/3/2026 | 1,234.50 | |
| Singapore | 14/03/2026 | 1,234.50 | |
| China | 2026/3/14 | 1,234.50 | |
| Taiwan | 2026/3/14 | 1,234.50 | |
| Japan | 2026/3/14 | 1,234.50 | |
| South Korea | 2026. 3. 14. | 1,234.50 | |
| Indonesia | 14/3/2026 | 1.234,50 | |
| Middle East & Africa | |||
| Israel | 14.3.2026 | 1,234.50 | |
| South Africa | 2026/03/14 | 1 234,50 | |
Common mistakes (and how to fix them)
Almost every "my number looks wrong" bug in a flow comes back to one of these four. The root cause is always the same: a value formatted or read with the wrong locale.
A number loses its value
You see
1.234,50 read as 1.234
In de-DE the dot groups thousands and the comma is the
decimal point, the exact opposite of en-US. Read with
the wrong locale, "1.234,50" looks like one point two three four.
Fix
Parse and format with the locale the value was written in, or store
numbers as plain 1234.5 before any calculation.
Everything comes out American
You see
US dates and a $ even though you are not in the US
When you leave the locale off, formatNumber and
formatDateTime default to en-us, not your
regional settings and not the locale of whoever runs the flow.
Fix
Always pass the locale as the last argument, for example
formatDateTime(utcNow(), 'd', 'en-GB').
A date lands in the wrong month
You see
03/04/2026 read as April 3, not March 4
03/04 is month then day in en-US but day
then month in en-GB. parseDateTime trusts
the locale you give it, so the wrong one silently swaps the parts.
Fix
Feed ISO 8601 (2026-03-04) whenever you can; it reads the
same in every locale. Otherwise pass the matching locale.
The month prints as minutes
You see
yyyy-mm-dd turn 09:30 into 2026-30-14
Date format codes are case sensitive. mm is minutes and
MM is the month, so a lowercase pattern prints the minute
value where you expected the month.
Fix
Use MM for month and dd for day. Keep
mm and ss for minutes and seconds.
The wrong currency symbol
You see
$1,234.50 when you wanted 1.234,50 €
The C2 format always uses the locale's own currency, and
there is no slot in the code to pick a different one. en-US
means dollars, de-DE means euros.
Fix
Use a locale whose currency you want, for example
formatNumber(1234.5, 'C2', 'de-DE'), or build the string
yourself with the symbol and an N2 number.
float() drops the decimals
You see
float('1.234,50') return 1.234
With no locale, float() assumes a dot decimal point, so a
comma-decimal value from a de-DE or pt-PT
source is read only up to the comma.
Fix
Pass the source locale as the second argument, for example
float('1.234,50', 'de-DE'), so the comma is treated as
the decimal point.
How we figured this out Technical details. Most people can skip this.
Your locale above is the best fit across the clues your browser provides. These are the raw values it considered.
navigator.languagenavigator.languagesAccept-Language(not sent)
Intl.NumberFormat(JavaScript required)
(JavaScript required)
(JavaScript required)
(JavaScript required)
(JavaScript required)