The minimal functionality an interface must have is a) to select a domain the strings are coming from (a single domain for all programs is not reasonable because its construction and maintenance is difficult, perhaps impossible) and b) to access a string in a selected domain.
This is principally the description of the gettext
interface. It
has an global domain which unqualified usages reference. Of course this
domain is selectable by the user.
char *textdomain (const char *domain_name);
This provides the possibility to change or query the current status of
the current global domain of the LC_MESSAGE
category. The
argument is a null-terminated string, whose characters must be legal in
the use in filenames. If the domain_name argument is NULL
,
the function return the current value. If no value has been set
before, the name of the default domain is returned: messages.
Please note that although the return value of textdomain
is of
type char *
no changing is allowed. It is also important to know
that no checks of the availability are made. If the name is not
available you will see this by the fact that no translations are provided.
To use a domain set by textdomain
the function
char *gettext (const char *msgid);
is to be used. This is the simplest reasonable form one can imagine.
The translation of the string msgid is returned if it is available
in the current domain. If not available the argument itself is
returned. If the argument is NULL
the result is undefined.
One things which should come into mind is that no explicit dependency to
the used domain is given. The current value of the domain for the
LC_MESSAGES
locale is used. If this changes between two
executions of the same gettext
call in the program, both calls
reference a different message catalog.
For the easiest case, which is normally used in internationalized GNU
packages, once at the beginning of execution a call to textdomain
is issued, setting the domain to a unique name, normally the package
name. In the following code all strings which have to be translated are
filtered through the gettext function. That's all, the package speaks
your language.
Go to the first, previous, next, last section, table of contents.