私は持っています
$ locale
LANG=en_GB.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES=en_GB.UTF-8
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
$ locale -a
C
en_GB.utf8
POSIX
ru_RU.utf8
しかし、man
エラーが発生します。
$ man
man: can't set the locale; make sure $LC_* and $LANG are correct
What manual page do you want?
以下を設定するとLC_ALL
エラーが消えます。
$ LC_ALL=en_GB.UTF-8 man
What manual page do you want?
しかし、他のロケールにLC_ALL
いくつかの設定があるので設定したくありません。LC_
この問題を解決する方法はman
?
答え1
man
Debian squeezeのソースコードで次のコードを見つけました。
/* initialise the locale */
if (!setlocale (LC_ALL, "") && !getenv ("MAN_NO_LOCALE_WARNING"))
/* Obviously can't translate this. */
error (0, 0, "can't set the locale; make sure $LC_* and $LANG "
"are correct");
setenv ("MAN_NO_LOCALE_WARNING", "1", 1);
環境変数をMAN_NO_LOCALE_WARNING
1に設定し、役に立つことを確認してください。setlocale (LC_ALL, "")
次の文書によると、なぜ失敗するのかわかりませんsetlocale()
。
The return value is NULL if the request cannot be honored.