---
name: "bindtextdomain"
section: "3"
platform: "linux"
package: "gettext"
version: "1.0-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/bindtextdomain"
---

# bindtextdomain(3)

set directory containing message catalogs

## 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 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 \<libintl.h\> 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

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

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)](/gettext/3.md), [**dgettext**(3)](/dgettext/3.md), [**dcgettext**(3)](/dcgettext/3.md), [**ngettext**(3)](/ngettext/3.md), [**dngettext**(3)](/dngettext/3.md), [**dcngettext**(3)](/dcngettext/3.md), [**textdomain**(3)](/textdomain/3.md), [**realpath**(3)](/realpath/3.md)
