Find My Locale

Your locale code tells Power Automate how to format numbers, dates, and currency.

Last updated

Your locale
en-US

Based on your browser's language setting.

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.

Language

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.

Region

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.

Script (optional)

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.

Formatted 1,234.50
Power Automate
formatNumber(1234.5, 'N2', 'en-US')
Formatted 3/14/2026
Power Automate
formatDateTime('2026-03-14T09:30:00Z', 'd', 'en-US')
Formatted $1,234.50
Power Automate
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

CodeMeaning1234.5 becomes
N0Number, no decimals1,235
N2Number, two decimals1,234.50
C2Currency, the locale's own$1,234.50
F2Fixed, no thousands separator1234.50
#,##0.00Custom pattern1,234.50

formatDateTime codes

CodeMeaning2026-03-14 09:30 becomes
dShort date3/14/2026
DLong dateSaturday, March 14, 2026
gShort date and time3/14/2026 9:30 AM
MMMM yyyyMonth and yearMarch 2026
ddddDay nameSaturday
yyyy-MM-ddSortable custom2026-03-14

Common locale codes

Click any code to copy it.

LocaleRegionDate sampleNumber sample
Most popular
United States3/14/20261,234.50
United Kingdom14/03/20261,234.50
Singapore14/03/20261,234.50
Germany14.3.20261.234,50
India14/3/20261,234.50
Canada2026-03-141,234.50
Australia14/03/20261,234.50
France14/03/20261 234,50
Netherlands14-3-20261.234,50
China2026/3/141,234.50
Americas
United States3/14/20261,234.50
Canada2026-03-141,234.50
Canada (French)2026-03-141 234,50
Mexico14/3/20261,234.50
Brazil14/03/20261.234,50
Europe
United Kingdom14/03/20261,234.50
France14/03/20261 234,50
Germany14.3.20261.234,50
Spain14/3/20261234,50
Italy14/03/20261234,50
Netherlands14-3-20261.234,50
Portugal14/03/20261234,50
Poland14.03.20261234,50
Sweden2026-03-141 234,50
Norway14.3.20261 234,50
Denmark14.3.20261.234,50
Russia14.03.20261 234,50
Türkiye14.03.20261.234,50
Asia-Pacific
Australia14/03/20261,234.50
New Zealand14/03/20261,234.50
India14/3/20261,234.50
Singapore14/03/20261,234.50
China2026/3/141,234.50
Taiwan2026/3/141,234.50
Japan2026/3/141,234.50
South Korea2026. 3. 14.1,234.50
Indonesia14/3/20261.234,50
Middle East & Africa
Israel14.3.20261,234.50
South Africa2026/03/141 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.

Browser language navigator.language

(JavaScript required)

Preferred languages navigator.languages

(JavaScript required)

Language sent to sites Accept-Language

(not sent)

Region format Intl.NumberFormat

(JavaScript required)

Time zone

(JavaScript required)

Number sample (1234.5)

(JavaScript required)

Date sample

(JavaScript required)

Currency sample (USD)

(JavaScript required)