[CONTENTS] [PREV] [NEXT]

ダミーの setlocale の使用

前で述べたように、X11R6 の国際化において、システムのロケール関数で 使用されているものは、setlocale だけで、これはチェックの目的で利用 されています。

そこで、裏技的になってしまいますが、LANG に設定した locale を常に 受け付けるダミーの setlocale を作成して組み込むことによって X の国際化機能を 利用します。

ダミーの例: dmysetlocale.c

#include <stdlib.h>
#include <string.h>

char *setlocale(int cat,const char *locale)
{
    static char name[100]="C";

    if(locale)
        if(!*locale)
            strcpy(name,getenv("LANG"));
        else
            strcpy(name,locale);
    return name;
}	
していることは単純で、
  1. 空文字列がわたされたら環境変数 LANG の内容を記録
  2. 文字列がわたされたらそれを記録
  3. 記録されている文字列を返す
だけです。

この関数をシステムの setlocale の変わりに libc にいれてしまうか、 国際化対応のクライアントのコンパイル時にこのコードを一緒にリンクさせるこ とで使用できます。

[CONTENTS] [PREV] [NEXT]