newlocale —
Creates a new locale
Standard C Library (libc, -lc)
#include <locale.h>
locale_t
  
  newlocale(int
    mask, const char *
    locale, locale_t
    base);
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) and
      strxfrm(3).
- LC_CTYPE_MASK
- The locale for the ctype(3)
      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) function.
- LC_MONETARY_MASK
- Set a locale for formatting monetary values; this affects the
      localeconv(3)
    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) and
      scanf(3), as well as values
      returned by
      localeconv(3).
- LC_TIME_MASK
- Set a locale for formatting dates and times using the
      strftime(3) function.
 
This function uses the same rules for loading locale components as
  setlocale(3).
Returns a new, valid, locale_t or NULL if an error occurs.
  You must free the returned locale with
  freelocale(3).
This function conforms to IEEE Std 1003.1-2008
  (“POSIX.1”).