langinfo.h(7POSIX)

๐ŸŒธ PROLOG (the lil disclaimer bestie) ๐ŸŒธ

okay so real talk before we dive in ๐Ÿ’… this manual page is part of the POSIX Programmer's Manual. the Linux implementation of this interface may differ (so like, go consult the corresponding Linux manual page for the details of Linux behavior, iykyk), or honestly the interface may not even be implemented on Linux at all ๐Ÿ˜ญ. not me being the bearer of bad news fr fr.


โœจ NAME โœจ

langinfo.h โ€” language information constants ๐Ÿฆ‹

(that's the whole vibe. it's the header that holds your locale's lil vocabulary.)


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

#include <langinfo.h>

that's it. that's the summoning ritual ๐Ÿซถ


๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so here's the tea โ˜• the <langinfo.h> header shall define the symbolic constants used to identify items of langinfo data (peep nl_langinfo() for the actual fetching, bestie).

the <langinfo.h> header shall define the locale_t type as described in <locale.h> ๐Ÿ‘‘

the <langinfo.h> header shall define the nl_item type as described in <nl_types.h> ๐Ÿ’œ

and then โ€” drumroll ๐Ÿฅ โ€” the <langinfo.h> header shall define the following symbolic constants, all with type nl_item. the entries under Category tell you which setlocale() category each item is defined in. it's giving organized. it's giving catalog.

๐ŸŒˆ the constants, the icons, the moment ๐ŸŒˆ

  • CODESET โ€” Category LC_CTYPE โ€” Codeset name. ๐Ÿงš
  • D_T_FMT โ€” Category LC_TIME โ€” String for formatting date and time.
  • D_FMT โ€” Category LC_TIME โ€” Date format string.
  • T_FMT โ€” Category LC_TIME โ€” Time format string.
  • T_FMT_AMPM โ€” Category LC_TIME โ€” a.m. or p.m. time format string.
  • AM_STR โ€” Category LC_TIME โ€” Ante-meridiem affix.
  • PM_STR โ€” Category LC_TIME โ€” Post-meridiem affix.
  • DAY_1 โ€” Category LC_TIME โ€” Name of the first day of the week (for example, Sunday).
  • DAY_2 โ€” Category LC_TIME โ€” Name of the second day of the week (for example, Monday).
  • DAY_3 โ€” Category LC_TIME โ€” Name of the third day of the week (for example, Tuesday).
  • DAY_4 โ€” Category LC_TIME โ€” Name of the fourth day of the week (for example, Wednesday).
  • DAY_5 โ€” Category LC_TIME โ€” Name of the fifth day of the week (for example, Thursday).
  • DAY_6 โ€” Category LC_TIME โ€” Name of the sixth day of the week (for example, Friday).
  • DAY_7 โ€” Category LC_TIME โ€” Name of the seventh day of the week (for example, Saturday).
  • ABDAY_1 โ€” Category LC_TIME โ€” Abbreviated name of the first day of the week.
  • ABDAY_2 โ€” Category LC_TIME โ€” Abbreviated name of the second day of the week.
  • ABDAY_3 โ€” Category LC_TIME โ€” Abbreviated name of the third day of the week.
  • ABDAY_4 โ€” Category LC_TIME โ€” Abbreviated name of the fourth day of the week.
  • ABDAY_5 โ€” Category LC_TIME โ€” Abbreviated name of the fifth day of the week.
  • ABDAY_6 โ€” Category LC_TIME โ€” Abbreviated name of the sixth day of the week.
  • ABDAY_7 โ€” Category LC_TIME โ€” Abbreviated name of the seventh day of the week.
  • MON_1 โ€” Category LC_TIME โ€” Name of the first month of the year.
  • MON_2 โ€” Category LC_TIME โ€” Name of the second month.
  • MON_3 โ€” Category LC_TIME โ€” Name of the third month.
  • MON_4 โ€” Category LC_TIME โ€” Name of the fourth month.
  • MON_5 โ€” Category LC_TIME โ€” Name of the fifth month.
  • MON_6 โ€” Category LC_TIME โ€” Name of the sixth month.
  • MON_7 โ€” Category LC_TIME โ€” Name of the seventh month.
  • MON_8 โ€” Category LC_TIME โ€” Name of the eighth month.
  • MON_9 โ€” Category LC_TIME โ€” Name of the ninth month.
  • MON_10 โ€” Category LC_TIME โ€” Name of the tenth month.
  • MON_11 โ€” Category LC_TIME โ€” Name of the eleventh month.
  • MON_12 โ€” Category LC_TIME โ€” Name of the twelfth month.
  • ABMON_1 โ€” Category LC_TIME โ€” Abbreviated name of the first month.
  • ABMON_2 โ€” Category LC_TIME โ€” Abbreviated name of the second month.
  • ABMON_3 โ€” Category LC_TIME โ€” Abbreviated name of the third month.
  • ABMON_4 โ€” Category LC_TIME โ€” Abbreviated name of the fourth month.
  • ABMON_5 โ€” Category LC_TIME โ€” Abbreviated name of the fifth month.
  • ABMON_6 โ€” Category LC_TIME โ€” Abbreviated name of the sixth month.
  • ABMON_7 โ€” Category LC_TIME โ€” Abbreviated name of the seventh month.
  • ABMON_8 โ€” Category LC_TIME โ€” Abbreviated name of the eighth month.
  • ABMON_9 โ€” Category LC_TIME โ€” Abbreviated name of the ninth month.
  • ABMON_10 โ€” Category LC_TIME โ€” Abbreviated name of the tenth month.
  • ABMON_11 โ€” Category LC_TIME โ€” Abbreviated name of the eleventh month.
  • ABMON_12 โ€” Category LC_TIME โ€” Abbreviated name of the twelfth month.
  • ERA โ€” Category LC_TIME โ€” Era description segments.
  • ERA_D_FMT โ€” Category LC_TIME โ€” Era date format string.
  • ERA_D_T_FMT โ€” Category LC_TIME โ€” Era date and time format string.
  • ERA_T_FMT โ€” Category LC_TIME โ€” Era time format string.
  • ALT_DIGITS โ€” Category LC_TIME โ€” Alternative symbols for digits.
  • RADIXCHAR โ€” Category LC_NUMERIC โ€” Radix character.
  • THOUSEP โ€” Category LC_NUMERIC โ€” Separator for thousands.
  • YESEXPR โ€” Category LC_MESSAGES โ€” Affirmative response expression.
  • NOEXPR โ€” Category LC_MESSAGES โ€” Negative response expression.
  • CRNCYSTR โ€” Category LC_MONETARY โ€” Local currency symbol, preceded by '-' if the symbol should appear before the value, '+' if the symbol should appear after the value, or '.' if the symbol should replace the radix character. If the local currency symbol is the empty string, implementations may return the empty string (""). ๐Ÿ’ธ
โš ๏ธ bestie listen. if the locale's values for p_cs_precedes and n_cs_precedes do not match, then the value of nl_langinfo(CRNCYSTR) and nl_langinfo_l(CRNCYSTR,loc) is unspecified. that's the undefined-vibes zone. do not go there. ๐Ÿ’€

๐Ÿซถ the functions ๐Ÿซถ

the following shall be declared as a function and may also be defined as a macro. a function prototype shall be provided.

char *nl_langinfo(nl_item);
char *nl_langinfo_l(nl_item, locale_t);

also, inclusion of the <langinfo.h> header may also make visible all symbols from <nl_types.h>. surprise bonus content, slay โœจ

the following sections are informative. (aka: the tea continues but it's optional reading ๐Ÿ’…)


๐Ÿ“ APPLICATION USAGE ๐Ÿ“

wherever possible, users are advised to use functions compatible with those in the ISO C standard to access items of langinfo data. like, that's the move.

in particular:

  • the strftime() function should be used to access date and time information defined in category LC_TIME ๐Ÿ•ฐ๏ธ
  • the localeconv() function should be used to access information corresponding to RADIXCHAR, THOUSEP, and CRNCYSTR ๐Ÿ’œ

it's giving "use the right tool for the job", periodt.


๐Ÿ’… RATIONALE ๐Ÿ’…

None.

(yeah. nothing. the committee said "no thoughts, head empty" and honestly? iconic.)


๐Ÿ”ฎ FUTURE DIRECTIONS ๐Ÿ”ฎ

None.

(the future is a mystery but this header's future is literally nothing. we love stability.)


๐Ÿ‘‘ SEE ALSO ๐Ÿ‘‘

  • Chapter 7, Locale
  • <locale.h>
  • <nl_types.h>

and from the System Interfaces volume of POSIX.1โ€2017:

  • nl_langinfo()
  • localeconv()
  • strfmon()
  • strftime()

go read those too, bestie, they're the rest of the lore ๐Ÿฆ‹


Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.

In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .


๐ŸŒŸ and that's the whole page, babe. this one came from IEEE/The Open Group, 2017 โ€” the langinfo.h(7POSIX) page, still serving looks. take care of her, she's a classic. mwah ๐Ÿ’‹โœจ๐ŸŒˆ
๐Ÿ“ฆ where this page comes from