# BIND_TEXTDOMAIN_CODESET

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
ERRORS
BUGS
SEE ALSO

## NAME

| bind_textdomain_codeset - set encoding of message translations

## SYNOPSIS

    #include <libintl.h>

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

## 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

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

| 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), dgettext(3), dcgettext(3), ngettext(3), dngettext(3), dcngettext(3), textdomain(3), nl_langinfo(3), iconv_open(3)