# man > GETTEXT(3)

[_GETTEXT_(3)](https://www.chedong.com/phpMan.php/man/GETTEXT/3/markdown)                            Library Functions Manual                            [_GETTEXT_(3)](https://www.chedong.com/phpMan.php/man/GETTEXT/3/markdown)

## NAME
       gettext, dgettext, dcgettext - translate message

## SYNOPSIS
### #include <libintl.h>

       **char * gettext (const char * _**msgid_**);**
       **char * dgettext (const char * _**domainname_**, const char * _**msgid_**);**
       **char * dcgettext (const char * _**domainname_**, const char * _**msgid_**,**
                         **int _**category_**);**

## DESCRIPTION
       The  **gettext**,  **dgettext  **and  **dcgettext **functions attempt to translate a text string into the
       user's native language, by looking up the translation in a message catalog.

       The _msgid_ argument identifies the message to be translated. By convention, it is the  English
       version  of  the  message,  with  non-ASCII characters replaced by ASCII approximations. This
       choice allows the translators to work with message catalogs, called PO  files,  that  contain
       both  the English and the translated versions of each message, and can be installed using the
       **msgfmt **utility.

       A message domain is a set of translatable _msgid_ messages. Usually, every software package has
       its own message domain. The domain name is used to determine the message  catalog  where  the
       translation  is  looked  up;  it  must be a non-empty string. For the **gettext **function, it is
       specified through a preceding **textdomain **call. For the **dgettext **and **dcgettext  **functions,  it
       is  passed  as  the  _domainname_ argument; if this argument is NULL, the domain name specified
       through a preceding **textdomain **call is used instead.

       Translation lookup operates in the context of the current locale. For the **gettext  **and  **dget‐**
       **text **functions, the **LC_MESSAGES **locale facet is used. It is determined by a preceding call to
       the  **setlocale **function. **setlocale(LC_ALL,"") **initializes the **LC_MESSAGES **locale based on the
       first nonempty value of the three environment variables **LC_ALL**, **LC_MESSAGES**, **LANG**; see **setlo‐**
       [**cale**(3)](https://www.chedong.com/phpMan.php/man/cale/3/markdown). For the **dcgettext **function, the locale facet is determined by the _category_ argument,
       which should be one of the **LC_xxx **constants  defined  in  the  <locale.h>  header,  excluding
       **LC_ALL**.  In  both cases, the functions also use the **LC_CTYPE **locale facet in order to convert
       the translated message from the translator's codeset to the current locale's codeset,  unless
       overridden by a prior call to the **bind_textdomain_codeset **function.

       The  message catalog used by the functions is at the pathname _dirname_/_locale_/_category_/_domain‐_
       _name_.mo. Here _dirname_ is the directory specified through **bindtextdomain**. Its default is  sys‐
       tem and configuration dependent; typically it is _prefix_/share/locale, where _prefix_ is the in‐
       stallation prefix of the package. _locale_ is the name of the current locale facet; the GNU im‐
       plementation  also  tries  generalizations,  such  as the language name without the territory
       name. _category_ is **LC_MESSAGES **for the **gettext **and **dgettext **functions, or the argument  passed
       to the **dcgettext **function.

       If  the  **LANGUAGE  **environment variable is set to a nonempty value, and the locale is not the
       "C" locale, the value of **LANGUAGE **is assumed to contain a  colon  separated  list  of  locale
       names. The functions will attempt to look up a translation of _msgid_ in each of the locales in
       turn. This is a GNU extension.

       In  the "C" locale, or if none of the used catalogs contain a translation for _msgid_, the **get‐**
       **text**, **dgettext **and **dcgettext **functions return _msgid_.

## RETURN VALUE
       If a translation was found in one of the specified catalogs, it is converted to the  locale's
       codeset  and  returned. The resulting string is statically allocated and must not be modified
       or freed. Otherwise _msgid_ is returned.

## ERRORS
       **errno **is not modified.

## BUGS
       The return type ought to be **const char ***, but is **char * **to avoid warnings in C code predating
       ANSI C.

       When an empty string is used for _msgid_, the functions may return a nonempty string.

## SEE ALSO
       [**ngettext**(3)](https://www.chedong.com/phpMan.php/man/ngettext/3/markdown), [**dngettext**(3)](https://www.chedong.com/phpMan.php/man/dngettext/3/markdown),  [**dcngettext**(3)](https://www.chedong.com/phpMan.php/man/dcngettext/3/markdown),  [**setlocale**(3)](https://www.chedong.com/phpMan.php/man/setlocale/3/markdown),  [**textdomain**(3)](https://www.chedong.com/phpMan.php/man/textdomain/3/markdown),  [**bindtextdomain**(3)](https://www.chedong.com/phpMan.php/man/bindtextdomain/3/markdown),
       [**bind_textdomain_codeset**(3)](https://www.chedong.com/phpMan.php/man/bindtextdomaincodeset/3/markdown), [**msgfmt**(1)](https://www.chedong.com/phpMan.php/man/msgfmt/1/markdown)

GNU gettext 0.20.1.124-32cf                   May 2001                                    [_GETTEXT_(3)](https://www.chedong.com/phpMan.php/man/GETTEXT/3/markdown)
