Есть старый ребус про Motif и UTF-8. Motif UTF-8 поддерживает, но как задействовать эту поддержку, по ходу, знают единицы. Частично она включается через локаль UTF-8, но это только часть дела. Код тоже должен быть приведён к соответствующему виду.
Вот рабочий пример helloworld'а на Motif'е, который при локали UTF-8 выведет строку в UTF-8 terminus'ом:
#include <Xm/PushB.h>
int main(argc, argv)
int argc;
char *argv[];
{
Widget toplevel, button;
XtAppContext app;
void button_pushed();
XmString label;
String mydefaults[] = { "*fontList:-xos4-terminus-bold-r-normal--28-*-*-*-*-*-iso10646-1", NULL };
XtSetLanguageProc (NULL, NULL, NULL);
toplevel = XtVaAppInitialize (&app, "Hello", NULL, 0,
&argc, argv, mydefaults, NULL);
label = XmStringCreateLocalized ("Push здесь to say hello");
button = XtVaCreateManagedWidget ("pushme",
xmPushButtonWidgetClass, toplevel,
XmNlabelString, label,
NULL);
XmStringFree (label);
XtAddCallback (button, XmNactivateCallback, button_pushed, NULL);
XtRealizeWidget (toplevel);
XtAppMainLoop (app);
}
void button_pushed(widget, client_data, call_data)
Widget widget;
XtPointer client_data;
XtPointer call_data;
{
printf ("Hello Yourself!\n");
}
gcc -o hello hello.c -lXm -lXt -lX11