DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
Complying with standard C

The setlocale() function

The setlocale() function is the interface to the program's locale. In general, any program that requires the invocation country's conventions should place a call such as:

   #include <locale.h>
   /*...*/
   setlocale(LC_ALL, "");
early in the program's execution path. This causes the program's current locale to change to the appropriate local version (if possible), since LC_ALL is the macro that specifies the entire locale instead of one category. The following are the standard categories:

LC_COLLATE sorting information
LC_CTYPE character classification information
LC_MONETARY currency printing information
LC_NUMERIC numeric printing information
LC_TIME date and time printing information
LC_MESSAGES message language information
Any of these macros can be passed as the first argument to setlocale() to specify just that category.

The setlocale() function returns the name of the current locale for a given category (or LC_ALL) and serves in an inquiry-only capacity when its second argument is a null pointer. Thus, code along the lines of the following can be used to change the locale or a portion thereof for a limited duration:

   #include <locale.h>
   /*...*/
   char *oloc;
   /*...*/
   oloc = setlocale(LC_cat, NULL);
   if (setlocale(LC_cat, "new") != 0)
   {
      /* use temporarily changed locale */
      (void)setlocale(LC_cat, oloc);
   }
Most programs will never need this capability.
Next topic: Changed functions
Previous topic: Locales

© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003