XtLanguageProc()XtLanguageProc()NameXtLanguageProc - interface definition for a procedure to set the locale
and return the language string.
Synopsis
typedef String (*XtLanguageProc)(Display*, String, XtPointer);
Display *display;
String language;
XtPointer client_data;
Inputs
display Specifies the connection to the X server.
language Specifies the initial language string obtained from the com‐
mand line or server per-display resources, or NULL if no lan‐
guage specification is found.
client_data
Specifies data registered with this function in the call to
XtSetLanguageProc().
Returns
The language string for the display.
Availability
Release 5 and later.
Description
An XtLanguageProc and its client_data argument are registered with a
call to XtSetLanguageProc(). It is invoked by XtDisplayInitialize()
with the initial value of the language string or NULL.
A language procedure is passed the language string, if any, from the
application command line or per-display resources, and should use that
string to localize the application appropriately. Setting the locale
usually involves calling setlocale(), XSupportsLocale(), and XSetLo‐
caleModifiers(), but applications that use other localization schemes
may need to do different or additional initialization in this proce‐
dure.
An XtLanguageProc returns a string which will be set as the language
string of the display by XtDisplayInitialize(), and will be used in
future calls to XtResolvePathname() to find localized files. The
returned string may be different than the language argument. If lan‐
guage is NULL, for example, a language procedure might determine the
locale from an environment variable and return that value. If the lan‐
guage procedure calls setlocale(), then the return value of this func‐
tion is an appropriate return value for the function. The Intrinsics
will make a private copy of this string.
Usage
All internationalized programs should call XtSetLanguageProc() before
calling XtAppInitialize(), but most can simply use the default language
procedure (pass NULL for the proc argument). The default procedure
should be sufficient for all applications that use only ANSI-C and X-
based internationalization schemes.
Example
The following is the Intrinsics default language procedure:
/*ARGSUSED*/
static String _XtDefaultLanguageProc(dpy, xnl, closure)
Display *dpy; /* unused */
String xnl;
XtPointer closure; /* unused */
{
if (! setlocale(LC_ALL, xnl))
XtWarning("locale not supported by C library, locale unchanged");
if (! XSupportsLocale()) {
XtWarning("locale not supported by Xlib, locale set to C");
setlocale(LC_ALL, "C");
}
if (! XSetLocaleModifiers(""))
XtWarning("X locale modifiers not supported, using default");
return setlocale(LC_ALL, NULL); /* re-query in case overwritten */
}
See AlsoXtDisplayInitialize(1), XtSetLanguageProc(1).
Xt - Locale Management XtLanguageProc()