blob: 66606eee4472b6bf0e26212e56626d785a168934 [file] [log] [blame]
<html lang="en">
<head>
<title>Locale Information - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Locales.html#Locales" title="Locales">
<link rel="prev" href="Standard-Locales.html#Standard-Locales" title="Standard Locales">
<link rel="next" href="Formatting-Numbers.html#Formatting-Numbers" title="Formatting Numbers">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Locale-Information"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Formatting-Numbers.html#Formatting-Numbers">Formatting Numbers</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Standard-Locales.html#Standard-Locales">Standard Locales</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Locales.html#Locales">Locales</a>
<hr>
</div>
<h3 class="section">7.6 Accessing Locale Information</h3>
<p>There are several ways to access locale information. The simplest
way is to let the C library itself do the work. Several of the
functions in this library implicitly access the locale data, and use
what information is provided by the currently selected locale. This is
how the locale model is meant to work normally.
<p>As an example take the <code>strftime</code> function, which is meant to nicely
format date and time information (see <a href="Formatting-Calendar-Time.html#Formatting-Calendar-Time">Formatting Calendar Time</a>).
Part of the standard information contained in the <code>LC_TIME</code>
category is the names of the months. Instead of requiring the
programmer to take care of providing the translations the
<code>strftime</code> function does this all by itself. <code>%A</code>
in the format string is replaced by the appropriate weekday
name of the locale currently selected by <code>LC_TIME</code>. This is an
easy example, and wherever possible functions do things automatically
in this way.
<p>But there are quite often situations when there is simply no function
to perform the task, or it is simply not possible to do the work
automatically. For these cases it is necessary to access the
information in the locale directly. To do this the C library provides
two functions: <code>localeconv</code> and <code>nl_langinfo</code>. The former is
part of ISO&nbsp;C<!-- /@w --> and therefore portable, but has a brain-damaged
interface. The second is part of the Unix interface and is portable in
as far as the system follows the Unix standards.
<ul class="menu">
<li><a accesskey="1" href="The-Lame-Way-to-Locale-Data.html#The-Lame-Way-to-Locale-Data">The Lame Way to Locale Data</a>: ISO C's <code>localeconv</code>.
<li><a accesskey="2" href="The-Elegant-and-Fast-Way.html#The-Elegant-and-Fast-Way">The Elegant and Fast Way</a>: X/Open's <code>nl_langinfo</code>.
</ul>
</body></html>