<html lang="en">
<head>
<title>Effects of Locale - 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="next" href="Choosing-Locale.html#Choosing-Locale" title="Choosing Locale">
<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="Effects-of-Locale"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Choosing-Locale.html#Choosing-Locale">Choosing Locale</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Locales.html#Locales">Locales</a>
<hr>
</div>

<h3 class="section">7.1 What Effects a Locale Has</h3>

<p>Each locale specifies conventions for several purposes, including the
following:

     <ul>
<li>What multibyte character sequences are valid, and how they are
interpreted (see <a href="Character-Set-Handling.html#Character-Set-Handling">Character Set Handling</a>).

     <li>Classification of which characters in the local character set are
considered alphabetic, and upper- and lower-case conversion conventions
(see <a href="Character-Handling.html#Character-Handling">Character Handling</a>).

     <li>The collating sequence for the local language and character set
(see <a href="Collation-Functions.html#Collation-Functions">Collation Functions</a>).

     <li>Formatting of numbers and currency amounts (see <a href="General-Numeric.html#General-Numeric">General Numeric</a>).

     <li>Formatting of dates and times (see <a href="Formatting-Calendar-Time.html#Formatting-Calendar-Time">Formatting Calendar Time</a>).

     <li>What language to use for output, including error messages
(see <a href="Message-Translation.html#Message-Translation">Message Translation</a>).

     <li>What language to use for user answers to yes-or-no questions
(see <a href="Yes_002dor_002dNo-Questions.html#Yes_002dor_002dNo-Questions">Yes-or-No Questions</a>).

     <li>What language to use for more complex user input. 
(The C library doesn't yet help you implement this.) 
</ul>

   <p>Some aspects of adapting to the specified locale are handled
automatically by the library subroutines.  For example, all your program
needs to do in order to use the collating sequence of the chosen locale
is to use <code>strcoll</code> or <code>strxfrm</code> to compare strings.

   <p>Other aspects of locales are beyond the comprehension of the library. 
For example, the library can't automatically translate your program's
output messages into other languages.  The only way you can support
output in the user's favorite language is to program this more or less
by hand.  The C library provides functions to handle translations for
multiple languages easily.

   <p>This chapter discusses the mechanism by which you can modify the current
locale.  The effects of the current locale on specific library functions
are discussed in more detail in the descriptions of those functions.

   </body></html>

