私は生成しましたen_US.utf8、ET_EE.iso88591 は、そしてru_RU.utf8ローカリゼーションファイル。ここでロケール変数のいずれかをru_RU.utf8またはen_US.utf8、これは何の効果もありません:
# locale -a
C
en_US.utf8
et_EE
et_EE.iso88591
POSIX
ru_RU.utf8
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
#
しかし、もし私が言語=変数の場合、他のすべての変数を除く言語=そしてLC_ALL=の値を取る言語=変数。各ロケール変数を個別に変更する方法はありますか?また、ロケール変数は通常のシェル変数ではなく、ロケールユーティリティ?
答え1
任意のロケール カテゴリを個別に設定できます。LANG
明示的に設定されていないカテゴリにのみ適用されます。
LANG
および はLC_xxx
通常の環境変数です。これらはlocale
ユーティリティの設定ではありません。locale
プログラムはロケール処理には関与せず、現在の利用可能なロケール設定を報告するだけの小さなユーティリティです。
と書くとLC_TIME=ru_RU.utf8
、環境変数は設定されず、シェル変数のみが設定されます。シェル変数はシェルの内部にあり、他のプログラムからは見えません。一方、環境変数は、シェルが起動するプログラムに継承されます。変数を環境にもエクスポートする必要があります。
$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
$ export LC_TIME
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"
または直接
$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"
答え2
Fedora/CentOS/RHEL ベースのディストリビューションでは、locale -a
このシステム ファイルでコマンドを実行すると、表示されるロケールのいずれかにロケールを変更できると思います。
/etc/sysconfig/i18n
たとえば、私の Fedora 14 システムの場合:
$ more /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
GNOME ではヘルプ アプリを実行できます:
system-config-language
次の GUI が表示されます。
Debian/Ubuntu ディストリビューションの場合は少し異なると思います。次のファイルだと思います:
/etc/default/locale
これらは環境変数だと思いますが、アプリケーションがそれらをどのように利用するのかは完全にはわかりません。
参考文献
答え3
少なくとも RedHat 6 では、LC_ALL が設定されている場合、LC_ALL が他のすべての LC_* 環境変数よりも優先されるため、他の LC_* 環境変数を設定しても効果がないことに注意してください。
[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=
答え4
Debian システムでは、 をdpkg-reconfigure locales
実行してメイン言語を設定し、他の言語を利用できるようにします。その後、 を実行して環境変数update-locale
を設定し、フォールバック言語を使用できるようにします。LANGUAGE
/etc/default/locale