ターミナルのメッセージは、デフォルトではロシア語を使用して表示されます。これは私のネイティブ言語です。
少しの間、それらを英語にしたい(例えば、フォーラムに貼り付ける)後、デフォルトの言語に切り替えます。
どのように切り替えてbashを使用して元に戻すことができますか?
言語設定の変更に使用できる環境変数はいくつかあります。 locale
コマンドを実行すると、現在のロケール設定を表示できます。すべてのロケール設定を英語に変更するには、LANG=C
を使用します。このC
ロケールは、追加の言語パックをインストールせずに常に使用できます。 (英語以外のロケールに一時的に変更するには、 @ mklement の投稿を参照してください。)
例:
デフォルトの言語設定でコマンドを実行し、現在のロケール設定を印刷します。
$ /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=
Lekensteynの有用な回答 OPが要求したように、オンデマンドでUS Englishに切り替えたい場合に最適ですが、オンデマンドでdifferent言語に切り替えたい場合、さらに作業が必要です。
開始する前に、Sudo apt-get install language-pack-<lang-tag>
を使用してメッセージテーブルをインストールする必要があります。ここで、<lang-tag>
は、スペイン語のes
など、 simple RTF 5646言語サブタグ です。
GNU gettext -basedユーティリティは、非標準のLANGUAGE
環境変数を優先します[1] POSIX定義のロケール環境変数LC_ALL
、LC_MESSAGES
、およびLANG
を(この順序で)。
LANGUAGE
がUbuntuシステムでデフォルトで設定されている場合[2]、つまり、単純な言語タグ(たとえば、スペイン語のLANG
)または言語領域タグ(たとえば、ドイツ語のドイツ語バリアントのde_DE
)を反映するes
値のsubstring 、異なる言語のメッセージを有効にするには、LANGUAGE
を設定解除またはオーバーライドする必要があります。[3]
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
)。
ただし、ローカライズされたメッセージはlanguageレベルでのみ存在する場合があり、フォールバックはlanguage部分に一致するメッセージを使用することです( es
、この場合)。
LANGUAGE
の設定を解除し、LC_ALL
を設定しますこの代替ソリューションundefinesLANGUAGE
最初に、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
など)にallローカライズアスペクトを設定し、(暗黙的に)LC_MESSAGES
を設定することでnon-目的の言語のGNUプログラム。
LC_ALL
がexact、fullロケール名(charsetサフィックスを含む)を有効にする方法(es_ES.UTF-8
)に注意してください(LANGUAGE
とは異なり、単純な言語タグで十分です(es
))。 LC_MESSSAGES
とLANG
の設定にも同じことが当てはまります。無効な/インストールされていないロケール名を指定すると、POSIXロケールにフォールバックするため、米国英語になります。
[1] Lekensteynの答えが機能する理由は、withoutunset/override LANGUAGE
でもexceptionです:(有効な)LC_MESSAGES
値(通常は間接的に設定) LANG
またはLC_ALL
による)は、C
または(その同義語)POSIX
のいずれかであり、その値は、もしあればLANGUAGE
の値に関係なく尊重されます。逆に、(有効な)LC_MESSAGES
値が他のspecificロケールの場合、LANGUAGE
が優先されます。
[2]これは buntu固有 に適用されますが、必ずしも その他のフレーバー ;には適用されません。 Lekensteynは、 Kubunt はLANGUAGE
を設定しないnotを行うと述べています。
間違いなく、LANGUAGE
はデフォルトでnotに設定する必要があります。これがない場合、LANG
値(現在のロケールを決定する)によって暗示されるLC_MESSAGES
値が尊重されます。
[3]このアプローチを使用して、LANGUAGE=C
またはLANGUAGE=POSIX
を(LANG=C
/LANG=POSIX
の代わりとして)割り当てることにより、[US]英語に切り替えることもできますが、それが積極的に認識されるのか、単にfallbackメカニズム。これらの値がlanguageタグで始まらない場合。たぶん、より良い選択はen_US
でしょう。
[4]このアプローチが機能しないEdgeの場合があります:pathで実行可能ファイルを呼び出そうとする-相対的か絶対的か-指定された言語に切り替えないで、単なるファイル名は:LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utility
はnot動作しません(現在のロケールでメッセージを出力します)。LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility
はスペイン語のエラーメッセージを出力します。
理由と理由があるかどうかを誰かが知っている場合は、お知らせください。