C localization functions
Template:DMCA Template:C Standard Library
In computing, C localization functions are a group of functions in the C programming language implementing basic localization routines.[1][2] The functions are used in multilingual programs to adapt to the specific locale. In particular, the way of displaying of numbers and currency can be modified. These settings affect the behaviour of input/output functions in the C Standard Library.[3]
Overview of functions
C localization functions and types are defined in Page Template:Mono/styles.css has no content.locale.h (Page Template:Mono/styles.css has no content.clocale header in C++).[4][5]
| Function | Description |
|---|---|
| setlocale | sets and gets the current C locale |
| localeconv | returns numeric and monetary formatting details of the current locale |
Criticism
The localization state is stored globally. This means that in a given program all operations involving a locale can use only one locale at a time. As a result, it is very difficult to implement programs that use more than one locale.[6]
The functions alter the behavior of Template:Tt, Template:Tt, Template:Tt and other functions which are often used to write saved data to a file or to other programs. The result is that a saved file in one locale will not be readable in another locale, or not be readable at all due to assumptions such as "numbers don't have commas in them". Most large-scale software forces the locale to "C" (or another fixed value) to work around these problems.
Example
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
/* Locale is set to "C" before this. This call sets it
to the "current locale" by reading environment variables: */
setlocale(LC_ALL, "");
const struct lconv* const currentlocale = localeconv();
printf("In the current locale, the default currency symbol is: %s\n", currentlocale->currency_symbol);
return EXIT_SUCCESS;
}
See also
References
Page Template:Reflist/styles.css has no content.
- ^ Page Module:Citation/CS1/styles.css has no content.ISO/IEC 9899:1999 specification (PDF). p. 204, § 7.11 Localization.
- ^ Page Module:Citation/CS1/styles.css has no content.Prata, Stephen (2004). C primer plus. Sams Publishing. Appendix B, Section V: The Standard ANSI C Library with C99 Additions. ISBN 0-672-32696-5.
- ^ Page Module:Citation/CS1/styles.css has no content."ISO/IEC 9899:201x" (PDF). 12 April 2011. p. 181. Archived from the original (PDF) on 29 March 2018.
- ^ Page Module:Citation/CS1/styles.css has no content."locale.h". utas.edu.au. infosys. Archived from the original on 4 June 2012. Retrieved 14 September 2011.
- ^ Page Module:Citation/CS1/styles.css has no content."openbsd/src". GitHub. Retrieved 9 April 2018.
- ^ Page Module:Citation/CS1/styles.css has no content."The Standard C Locale and the Standard C++ Locales". Rogue Wave Software, Inc. 1996. Archived from the original on 19 February 2020. Retrieved 10 November 2011.