\"      $NetBSD: gettext.3,v 1.12 2009/11/12 00:43:52 joerg Exp $
\"
\" Copyright (c) 2000 Citrus Project,
\" All rights reserved.
\"
\" Redistribution and use in source and binary forms, with or without
\" modification, are permitted provided that the following conditions
\" are met:
\" 1. Redistributions of source code must retain the above copyright
\"    notice, this list of conditions and the following disclaimer.
\" 2. Redistributions in binary form must reproduce the above copyright
\"    notice, this list of conditions and the following disclaimer in the
\"    documentation and/or other materials provided with the distribution.
\"
\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
\" SUCH DAMAGE.
\"
Dd November 10, 2004
Dt GETTEXT 3
Os
Sh NAME
Nm gettext ,
Nm dgettext ,
Nm ngettext ,
Nm dngettext ,
Nm textdomain ,
Nm bindtextdomain ,
Nm bind_textdomain_codeset ,
Nm dcgettext ,
Nm dcngettext
Nd message handling functions
Sh LIBRARY
Lb libintl
Sh SYNOPSIS
In libintl.h
Ft char *
Fn gettext "const char *msgid"
Ft char *
Fn dgettext "const char *domainname" "const char *msgid"
Ft char *
Fn ngettext "const char *msgid1" "const char *msgid2" "unsigned long int n"
Ft char *
Fn dngettext "const char *domainname" "const char *msgid1" "const char *msgid2" "unsigned long int n"
Ft char *
Fn textdomain "const char *domainname"
Ft char *
Fn bindtextdomain "const char *domainname" "const char *dirname"
Ft char *
Fn bind_textdomain_codeset "const char *domainname" "const char *codeset"
In libintl.h
In locale.h
Ft char *
Fn dcgettext "const char *domainname" "const char *msgid" "int category"
Ft char *
Fn dcngettext "const char *domainname" "const char *msgid1" "const char *msgid2" "unsigned long int n" "int category"
Sh DESCRIPTION
The
Fn gettext ,
Fn dgettext ,
and
Fn dcgettext
functions attempt to retrieve a
target string based on the specified
Fa msgid
argument within the context of a
specific domain and the current locale.
The length of strings returned by
Fn gettext ,
Fn dgettext ,
and
Fn dcgettext
is undetermined until the function is
called.
The
Fa msgid
argument is a nul-terminated string.
Pp
The
Fn ngettext ,
Fn dngettext ,
and
Fn dcngettext
functions are equivalent to
Fn gettext ,
Fn dgettext ,
and
Fn dcgettext ,
respectively, except for the handling of
plural forms.
The
Fn ngettext ,
Fn dngettext ,
and
Fn dcngettext
functions search for the
message string using the
Fa msgid1
argument as the key, using the argument
Fa n
to
determine the plural form.
If no message catalogs are found,
Fa msgid1
is returned
if
Fa n Li == 1 ,
otherwise
Fa msgid2
is returned.
Pp
The
Dv LANGUAGE
environment variable is examined first to determine the message
catalogs to be used.
The value of the
Dv LANGUAGE
environment variable is a list
of locale names separated by colon (:) character.
If the
Dv LANGUAGE
environment
variable is defined, each locale name is tried in the specified order and if a
message catalog containing the requested message is found, the message is
returned.
If the
Dv LANGUAGE
environment variable is defined but failed to locate
a message catalog, the
Fa msgid
string will be returned.
Pp
If the
Dv LANGUAGE
environment variable is not defined,
Dv LC_ALL ,
Dv LC_xxx ,
and
Dv LANG
environment variables are examined to locate the message catalog,
following the convention used by the
Xr setlocale 3
function.
Pp
The pathname used to locate the message catalog is
Pa dirname/locale/category/domainname.mo ,
where dirname is the directory specified by
Fn bindtextdomain ,
locale is a locale name determined by the definition of environment variables,
Fa category
is
Dv LC_MESSAGES
if
Fn gettext ,
Fn ngettext ,
Fn dgettext ,
or
Fn dngettext
is
called, otherwise
Dv LC_xxx
where the name is the same as the locale category name
specified by the
Fa category
argument of
Fn dcgettext
or
Fn dcngettext .
Fa domainname
is the name of the domain specified by
Fn textdomain
or the
Fa domainname
argument of
Fn dgettext ,
Fn dngettext ,
Fn dcgettext ,
or
Fn dcngettext .
Pp
For
Fn gettext
and
Fn ngettext ,
the domain used is set by the last valid call to
Fn textdomain .
If a valid call to
Fn textdomain
has not been made, the default
domain (called messages) is used.
Pp
For
Fn dgettext ,
Fn dngettext ,
Fn dcgettext ,
and
Fn dcngettext ,
the domain used is
specified by the
Fa domainname
argument.
The
Fa domainname
argument is equivalent in
syntax and meaning to the
Fa domainname
argument to
Fn textdomain ,
except that the
selection of the domain is valid only for the duration of the
Fn dgettext ,
Fn dngettext ,
Fn dcgettext ,
or
Fn dcngettext
function call.
Pp
The
Fn dcgettext
and
Fn dcngettext
functions require additional argument
Fa category
for retrieving message string for other than
Dv LC_MESSAGES
category.
Available value for the
Fa category
argument are
Dv LC_CTYPE ,
Dv LC_COLLATE ,
Dv LC_MESSAGES ,
Dv LC_MONETARY ,
Dv LC_NUMERIC ,
and
Dv LC_TIME .
The call of
Fn dcgettext "domainname" "msgid" "LC_MESSAGES"
is equivalent to
Fn dgettext "domainname" "msgid" .
Note that
Dv LC_ALL
must not be used.
Pp
The
Fn textdomain
function sets or queries the name of the current domain of the
active
Dv LC_MESSAGES
locale category.
The
Fa domainname
argument is a
nul-terminated string that can contain only the characters allowed in legal
filenames.
Pp
The
Fa domainname
argument is the unique name of a domain on the system.
If there
are multiple versions of the same domain on one system, namespace collisions
can be avoided by using
Fn bindtextdomain .
If
Fn textdomain
is not called, a
default domain is selected.
The setting of domain made by the last valid call
to
Fn textdomain
remains valid across subsequent calls to
Xr setlocale 3 ,
and
Fn gettext .
Pp
The
Fa domainname
argument is applied to the currently active LC_MESSAGES locale.
Pp
The current setting of the domain can be queried without affecting the current
state of the domain by calling
Fn textdomain
with
Fa domainname
set to the
Dv NULL
pointer.
Calling
Fn textdomain
with a
Fa domainname
argument of a
Dv NULL
string sets
the domain to the default domain
Pq messages .
Pp
The
Fn bindtextdomain
function binds the path predicate for a message domain
Fa domainname
to the value contained in dirname.
If
Fa domainname
is a non-empty
string and has not been bound previously,
Fn bindtextdomain
binds
Fa domainname
with
Fa dirname .
Pp
If
Fa domainname
is a non-empty string and has been bound previously,
Fn bindtextdomain
replaces the old binding with dirname.
The dirname argument
can be an absolute pathname being resolved when
Fn gettext ,
Fn ngettext ,
Fn dgettext ,
Fn dngettext ,
Fn dcgettext ,
or
Fn dcngettext
are called.
If
Fa domainname
is a
Dv NULL
pointer or an empty string,
Fn bindtextdomain
returns a
Dv NULL
pointer.
If
Fn bindtextdomain
is not called, implementation-defined default directory is used.
Pp
The
Fn bind_textdomain_codeset
function can be used to specify the output
Fa codeset
for message catalogs for domain
Fa domainname .
The
Fa codeset
argument must
be a valid codeset name which can be used for the
Xr iconv_open 3
function.
Pp
If the
Fa codeset
argument is the
Dv NULL
pointer,
Fn bind_textdomain_codeset
returns the currently selected
Fa codeset
for the domain with the name
Fa domainname .
It returns a
Dv NULL
pointer if no
Fa codeset
has yet been selected.
Pp
The
Fn bind_textdomain_codeset
function can be used several times.
If used multiple times, with the same
Fa domainname
argument,
the later call overrides the
settings made by the earlier one.
Pp
The
Fn bind_textdomain_codeset
function returns a pointer to a string containing
the name of the selected
Fa codeset .
\".Sh "RETURN VALUES"
\".Sh EXAMPLES
Sh SEE ALSO
Xr setlocale 3 ,
Xr nls 7
\".Sh STANDARDS
Sh HISTORY
The functions are implemented by Citrus project,
based on the documentations for GNU gettext.
Sh BUGS
\" The text was ripped off from Annex C of
\" .Dq LI18NUX 2000 Globalization Specification Version 1.0 .
\" .Pp
Fn bind_textdomain_codeset
does not work at this moment
Pq it always fails .