web-dev-qa-db-ja.com

ロケール環境変数を変更するにはどうすればよいですか?

en_US.utf8et_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"
# 

ただし、LANG =変数を変更すると、LANGUAGE =LC_ALL =以外のすべての変数がLANG =変数。各ロケール変数を個別に変更する方法はありますか?さらに、ロケール変数は通常のシェル変数ではなく、-localeユーティリティへのパラメーターのようなものであることを修正しますか?

18
Martin

ロケールカテゴリは個別に設定できます。 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"

Fedora/CentOS/RHELベースのディストリビューションでは、このシステムファイルでlocale -aコマンドを実行すると、ロケールを表示されているロケールの1つに変更できると思います。

/etc/sysconfig/i18n

たとえば、私のFedora 14システムでは:

$ more /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-Sun16"

GNOMEでは、ヘルプアプリを実行できます。

system-config-language

これにより、このGUIが表示されます。

ss of lang. gui

Debian/Ubuntuディストリビューションでは少し異なると思います。私はそれがこのファイルだと信じています:

/etc/default/locale

私はそれらが環境変数であると信じていますが、アプリケーションがそれらをどのように使用するかは完全にはわかりません。

参考文献

6
slm

少なくとも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
Kiwicmc

Debianシステムでは、dpkg-reconfigure localesを実行してメイン言語を設定し、他の言語を使用可能にすることができます。次に、update-localeを実行して、/etc/default/localeLANGUAGE環境変数を設定し、フォールバック言語を設定できます。

1
Leandro