BINDTEXTDOMAIN(3) Library Functions Manual BINDTEXTDOMAIN(3)

# [NAME](#NAME)

bindtextdomain - set directory containing message catalogs

# [SYNOPSIS](#SYNOPSIS)

```
#include <libintl.h>

char * bindtextdomain (const char * domainname, const char * dirname);
```

# [DESCRIPTION](#DESCRIPTION)

The **bindtextdomain** function sets the base directory of the hierarchy containing message catalogs 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 &lt;libintl.h&gt; header and the libc/libintl libraries.

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 *domainname* 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 pathname; 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 *domainname*.

# [RETURN VALUE](#RETURN_VALUE)

If successful, the **bindtextdomain** function returns the current base directory for domain *domainname*, after possibly changing it. The resulting string is valid until the next **bindtextdomain** call for the same *domainname* and must not be modified or freed. If a memory allocation failure occurs, it sets **errno** to **ENOMEM** and returns NULL.

# [ERRORS](#ERRORS)

The following error can occur, among others:

[**ENOMEM**](#ENOMEM)

Not enough memory available.

# [BUGS](#BUGS)

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

# [SEE ALSO](#SEE_ALSO)

[**gettext**(3)](/man/os/gettext/gettext.3), [**dgettext**(3)](/man/os/gettext/dgettext.3), [**dcgettext**(3)](/man/os/gettext/dcgettext.3), [**ngettext**(3)](/man/os/gettext/ngettext.3), [**dngettext**(3)](/man/os/gettext/dngettext.3), [**dcngettext**(3)](/man/os/gettext/dcngettext.3), [**textdomain**(3)](/man/os/gettext/textdomain.3), [**realpath**(3)](/man/os/gettext/realpath.3)

May 2001 GNU gettext 1.0

---

Document: bindtextdomain(3) from gettext 1.0-r8 (Chainguard OS)
Source: https://git.savannah.gnu.org/git/gettext.git
