---
name: "newlocale"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/newlocale"
---

# newlocale(3)

Creates a new locale

## NAME

**newlocale** – Creates a new locale

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<locale.h\>**

*locale\_t*\

**newlocale**(*int mask*, *const char \* locale*, *locale\_t base*);

## DESCRIPTION

Creates a new locale, inheriting some properties from an existing locale. The *mask* defines the components that the new locale will have set to the locale with the name specified in the *locale* parameter. Any components not specified in *mask* will be inherited from the locale referenced by *base*, if *base* is not NULL. If the call is successful, the state of the locale referenced by *base* is unspecified, and it must not be accessed. The special locale LC\_GLOBAL\_LOCALE may not be specified for *base*. The *mask* is either *LC\_ALL\_MASK*, indicating all possible locale components, or the logical OR of some combination of the following:

- LC\_COLLATE\_MASK

  The locale for string collation routines. This controls alphabetic ordering in [strcoll(3)](/strcoll/3.md) and [strxfrm(3)](/strxfrm/3.md).

- LC\_CTYPE\_MASK

  The locale for the [ctype(3)](/ctype/3.md) and [multibyte(3)](/multibyte/3.md) functions. This controls recognition of upper and lower case, alphabetic or non-alphabetic characters, and so on.

- LC\_MESSAGES\_MASK

  Set a locale for message catalogs, see [catopen(3)](/catopen/3.md) function.

- LC\_MONETARY\_MASK

  Set a locale for formatting monetary values; this affects the [localeconv(3)](/localeconv/3.md) function.

- LC\_NUMERIC\_MASK

  Set a locale for formatting numbers. This controls the formatting of decimal points in input and output of floating point numbers in functions such as [printf(3)](/printf/3.md) and [scanf(3)](/scanf/3.md), as well as values returned by [localeconv(3)](/localeconv/3.md).

- LC\_TIME\_MASK

  Set a locale for formatting dates and times using the [strftime(3)](/strftime/3.md) function.

This function uses the same rules for loading locale components as [setlocale(3)](/setlocale/3.md).

## RETURN VALUES

Returns a new, valid, *locale\_t* or NULL if an error occurs. You must free the returned locale with [freelocale(3)](/freelocale/3.md).

## SEE ALSO

[duplocale(3)](/duplocale/3.md), [freelocale(3)](/freelocale/3.md), [localeconv(3)](/localeconv/3.md), [querylocale(3)](/querylocale/3.md), [uselocale(3)](/uselocale/3.md), [xlocale(3)](/xlocale/3.md)

## STANDARDS

This function conforms to IEEE Std 1003.1-2008 (“POSIX.1”).
