BIND\_TEXTDOMAIN\_CODESET(3) Library Functions Manual BIND\_TEXTDOMAIN\_CODESET(3)

# [NAME](#NAME)

bind\_textdomain\_codeset - set encoding of message translations

# [SYNOPSIS](#SYNOPSIS)

```
#include <libintl.h>

char * bind_textdomain_codeset (const char * domainname,
                                const char * codeset);
```

# [DESCRIPTION](#DESCRIPTION)

The **bind\_textdomain\_codeset** function sets the output codeset for message catalogs for domain *domainname*.

A message domain is a set of translatable *msgid* messages. Usually, every software package has its own message domain.

By default, the **gettext** family of functions returns translated messages in the locale's character encoding, which can be retrieved as **nl\_langinfo (CODESET)**. The need for calling **bind\_textdomain\_codeset** arises for programs which store strings in a locale independent way (e.g. UTF-8) and want to avoid an extra character set conversion on the returned translated messages.

*domainname* must be a non-empty string.

If *codeset* is not NULL, it must be a valid encoding name which can be used for the **iconv\_open** function. The **bind\_textdomain\_codeset** function sets the output codeset for message catalogs belonging to domain *domainname* to *codeset*. The function makes copies of the argument strings as needed.

If *codeset* is NULL, the function returns the previously set codeset for domain *domainname*. The default is NULL, denoting the locale's character encoding.

# [RETURN VALUE](#RETURN_VALUE)

If successful, the **bind\_textdomain\_codeset** function returns the current codeset for domain *domainname*, after possibly changing it. The resulting string is valid until the next **bind\_textdomain\_codeset** 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. If no codeset has been set for domain *domainname*, it 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), [**nl\_langinfo**(3)](/man/os/gettext/nl_langinfo.3), [**iconv\_open**(3)](/man/os/gettext/iconv_open.3)

November 2024 GNU gettext 1.0

---

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