[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:14820] Re: OUTPUT_CHARSET はまだ必要 ?



From: Takashi Okamoto <toraneko@xxxxxxxxx>
Subject: [debian-devel:14819] Re: OUTPUT_CHARSET はまだ必要 ?
Date: Mon, 14 Jan 2002 22:15:22 +0900

> 上記の部分を、(例えば、cccp.c)下記のように書き換えるとか?
> 
> #ifdef HAVE_LC_MESSAGES
>   setlocale (LC_MESSAGES, "");
> #endif
>   (void) bindtextdomain (PACKAGE, localedir);
>   (void) textdomain (PACKAGE);
> +  (void) bind_textdomain_codeset(PACKAGE, nl_langinfo(CODESET));           
> 
> # setlocale (LC_ALL,"") とかも必要かな...

上記の記述は、嘘でした。すみません。

ちょっと調べた感じでは、

gettext1.c
---
#include <locale.h>

    int
    main(int argc, char* argv[])
{
        setlocale(LC_MESSAGES, "");
        bindtextdomain("libc", "/usr/share/locale");
        textdomain("libc");
    
        printf("%s\n", gettext("Quit"));
}
---
$ gcc gettext1.c 
$ export LANG=ja_JP.eucJP ./a.out 
??
--

gettext2.c
---
#include <locale.h>

    int
    main(int argc, char* argv[])
{
        setlocale(LC_MESSAGES, "");
        setlocale(LC_CTYPE, ""); // ここ追加
        bindtextdomain("libc", "/usr/share/locale");
        textdomain("libc");
    
        printf("%s\n", gettext("Quit"));
}
---
$ gcc gettext2.c 
$ export LANG=ja_JP.eucJP ./a.out 
終了
--

となるようです。で、gcc のディレクトリの LC_CTYPE と、LC_MESSAGES の対
応を調べると、

c-lex.c:241:  setlocale (LC_CTYPE, "");
cccp.c:1303:  setlocale (LC_CTYPE, "");

cccp.c:1249:  setlocale (LC_MESSAGES, "");
collect2.c:1021:  setlocale (LC_MESSAGES, "");
cppmain.c:56:  setlocale (LC_MESSAGES, "");
gcc.c:4657:  setlocale (LC_MESSAGES, "");
gcov.c:230:  setlocale (LC_MESSAGES, "");
protoize.c:4562:  setlocale (LC_MESSAGES, "");
toplev.c:4794:  setlocale (LC_MESSAGES, "");

対応が取れていませんね。この辺りが原因でしょうか....
----
おかもとたかし