# phpman > man > bindtextdomain(3)

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



## NAME
       bindtextdomain - set directory containing message catalogs

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

       **char** ***** **bindtextdomain** **(const** **char** ***** _domainname_**,** **const** **char** ***** _dirname_**);**

## DESCRIPTION
       The **bindtextdomain** function sets the base directory of the hierarchy containing message cata‐
       logs for a given message domain.

       A message domain is a set of translatable _msgid_ messages. Usually, every software package has
       its  own  message domain. The need for calling **bindtextdomain** arises because packages are not
       always installed with the same prefix as the <libintl.h>  header  and  the  libc/libintl  li‐
       braries.

       Message  catalogs  will  be  expected at the pathnames _dirname_/_locale_/_category_/_domainname_.mo,
       where _locale_ is a locale name and _category_ is a locale facet such as **LC**___**MESSAGES**.

       _domainname_ must be a non-empty string.

       If _dirname_ is not NULL, the base directory for message catalogs belonging to  domain  _domain__‐
       _name_  is  set to _dirname_. The function makes copies of the argument strings as needed. If the
       program wishes to call the **chdir** function, it is important that _dirname_ be an absolute  path‐
       name; otherwise it cannot be guaranteed that the message catalogs will be found.

       If _dirname_ is NULL, the function returns the previously set base directory for domain _domain__‐
       _name_.

## RETURN VALUE
       If successful, the **bindtextdomain** function returns the current base directory for domain  _do__‐
       _mainname_,  after  possibly  changing  it.  The resulting string is valid until the next **bind**‐‐
       **textdomain** call for the same _domainname_ and must not be modified or freed. If a memory  allo‐
       cation failure occurs, it sets **errno** to **ENOMEM** and returns NULL.

## ERRORS
       The following error can occur, among others:

       **ENOMEM** Not enough memory available.

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

## SEE ALSO
       [**gettext**(3)](https://www.chedong.com/phpMan.php/man/gettext/3/markdown), [**dgettext**(3)](https://www.chedong.com/phpMan.php/man/dgettext/3/markdown),  [**dcgettext**(3)](https://www.chedong.com/phpMan.php/man/dcgettext/3/markdown),  [**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),  **textdo**‐‐
       [**main**(3)](https://www.chedong.com/phpMan.php/man/main/3/markdown), [**realpath**(3)](https://www.chedong.com/phpMan.php/man/realpath/3/markdown)



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