回答:
言語設定の変更に使用できる環境変数はいくつかあります。locale
コマンドを実行すると、現在のロケール設定を表示できます。すべてのロケール設定を英語に変更するには、を使用しますLANG=C
。このC
ロケールは、追加の言語パックをインストールせずに常に使用可能です。(一時的に英語以外のロケールに変更するには、@ mklement0の投稿を参照してください。)
例:
デフォルトの言語設定でコマンドを実行し、現在のロケール設定を印刷します。
$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=
1つのプログラムの言語を一時的にオーバーライドし、実際に一時的であることを示します。
$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet
現在のシェルで実行されるすべてのコマンドのロケールを変更し、証明を再度含めます。
$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
LANGUAGE
は例外です:GNU gettextは、(有効な)値(通常、またはを介して間接的に設定される)がor(その同義語)であるLANGUAGE
場合を除き、値を優先します。また、この回答では未設定であることに注意してください。デフォルトでは設定されていますが、設定されている場合は、それをオーバーライドして特定のロケールの言語(「C」/「POSIX」ではなく)に切り替える必要があります。あなたが見つけたもの。LC_MESSAGES
LANG
LC_ALL
C
POSIX
LANGUAGE
LANGUAGE
明示的に設定解除またはオーバーライドしない限り、他のロケールでは機能しません。質問の一般的なタイトルを考えると、人々は英語以外の言語への切り替えを探しているこの回答を見つける可能性が高いため、この情報を回答に追加することを検討してください。
LANGUAGE
必要に応じて、詳細を説明する別の回答を追加できます:)
Lekensteynの有用な回答は、OPが要求したように、オンデマンドで米国英語に切り替えたい場合に最適ですが、オンデマンドで別の言語に切り替えたい場合は、さらに作業が必要です。
開始する前にsudo apt-get install language-pack-<lang-tag>
、でメッセージテーブルをインストールする必要があります。ここで、<lang-tag>
はスペイン語などの単純なRTF 5646言語サブタグes
です。
GNUはのgettextベースのユーティリティは非標準に優先順位を与えるLANGUAGE
環境変数[1]
POSIX定義ロケール環境変数上LC_ALL
、LC_MESSAGES
およびLANG
(この順序で)。
LANGUAGE
Ubuntuシステムではデフォルトで設定されている[2]、つまり、単純な言語タグ(スペイン語など)または言語地域タグ(ドイツ語のドイツ語版など)を反映する値の部分文字列に設定されている場合、別の言語のメッセージを有効にするには、設定解除またはオーバーライドする必要があります。[3]LANG
es
de_DE
LANGUAGE
LANGUAGE
例:es
アドホックスペイン語()メッセージに切り替えます:
$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
注:などの単純な言語タグes
で十分ですが、地域識別子(es_AR
アルゼンチンなど)、および文字セットの接尾辞(例、es_AR.UTF-8
)を追加することもできます。
ただし、ローカライズされたメッセージは言語レベルでのみ存在する可能性があり、フォールバックは言語部分(es
この場合は)に一致するメッセージを使用することです。
LANGUAGE
設定解除および設定LC_ALL
この代替ソリューションでは、まず定義を解除し LANGUAGE
、次にPOSIXロケール環境変数LC_ALL
を使用して暗黙的に設定しますLC_MESSAGES
[4]:
$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio
このソリューションには、すべてのローカリゼーションの側面を指定されたロケール(LC_TIME
日付/時刻形式など)に設定し、(暗黙的に)設定することで、GNU 以外のプログラムに目的の言語をLC_MESSAGES
通知するという利点があります。
注どのようにLC_ALL
必要となる正確な、完全な(有効であるために、文字セットの接尾辞を含め、ロケール名をes_ES.UTF-8
()とは異なりLANGUAGE
、単純な言語タグが十分であるため、(のようなes
))。設定LC_MESSSAGES
とにも同じことが当てはまりますLANG
。無効な/インストールされていないロケール名を指定すると、POSIXロケールにフォールバックするため、米国英語になります。
[1] Lekensteynの答えがあっても機能することの理由なしに上書き/設定解除は、LANGUAGE
ある例外:(有効な)場合LC_MESSAGES
の値(典型的に介して間接的に設定LANG
又はLC_ALL
)のいずれかであるC
か、(その同義語)POSIX
、その値に関係なくの値の、尊重されLANGUAGE
、もしあれば。逆に、(有効な)LC_MESSAGES
値が他の特定のロケールである場合LANGUAGE
は、優先されます。
[2]これはUbuntu固有に適用されますが、必ずしも他のフレーバーに適用されるわけではありません。Lekensteynは、Kubuntuは設定しないと述べていますLANGUAGE
。
おそらく、デフォルトでは設定しないでLANGUAGE
ください。値が存在しない場合(現在のロケールを決定する)、その値によって暗示される値が尊重されるためです。
LC_MESSAGES
LANG
[3]あなたはまた、いずれかの割り当てることによって、英語[米国]に切り替えるには、このアプローチを使用することができますLANGUAGE=C
かLANGUAGE=POSIX
(、の代替としてLANG=C
/ LANG=POSIX
Iは不明だけれどもそれは積極的に認識または単にされているかどうか、)フォールバックメカニズムこれらの値はドンことを考えると、 ' 言語タグから始めないでください。たぶん、より良い選択でしょうen_US
。
[4] このアプローチが機能しないエッジケースがあります:パスで実行可能ファイルを呼び出しようとすると-相対または絶対-指定された言語に切り替わりませんが、単なるファイル名は
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility
機能しません:メッセージを出力します(現在のロケールでは)、そうではあり
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
ません(スペイン語のエラーメッセージを出力します)。
理由と、これに正当な理由があるかどうかを誰かが知っている場合は、お知らせください。
LANG
かLANG_ALL
、まだ動作していませんLANGUAGE
。参照してくださいなぜ私のために言語を変更LANG環境変数をオーバーライドしていないのですか?