コマンド出力言語を母国語から英語に切り替えるには、Ubuntuの質問に英語のコマンド出力(エラーメッセージ)を投稿できますか?
コマンド出力言語を母国語から英語に切り替えるには、Ubuntuの質問に英語のコマンド出力(エラーメッセージ)を投稿できますか?
回答:
export LC_ALL=C
十分です。後続のコマンド出力はすべて英語で表示されます。
ネイティブ言語に戻したい場合は、LC_ALL
変数の設定を解除します。
unset LC_ALL
DEロケールとENロケールを切り替えるbash関数を次に示します。
好みの言語でこのコードを拡張できます。これを使用するには、~/.bashrc
(または~/.bash_profile
)-
で呼び出して_configure_locale EN
英語に切り替えます。
function _configure_locale() { # [profile]
local profile=${1:-EN}
case ${profile} in
DE|DE_DE|de_DE)
LC_ALL="de_DE.UTF-8"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
;;
EN|EN_US|en|en_US)
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
;;
*)
echo "ALERT" "${FUNCNAME}: unknown profile '${profile}'"
;;
esac
LC_PAPER="de_DE.UTF-8"; # independent from locale
LESSCHARSET="utf-8"; # independent from locale
MM_CHARSET="utf-8" # independent from locale
echo "locale settings" "${LANG}";
export LC_ALL LANG LANGUAGE LC_PAPER LESSCHARSET MM_CHARSET
}
一般に、いくつかのプログラムの誤動作を避けるためLC_ALL
にLANG
、3つの環境変数すべてを変更することをお勧めしLANGUAGE
ます。
コードを母国語に拡張するのは非常に簡単です。次のコマンドを呼び出すと、必要な値を見つけることができます
env |egrep -e 'LC_ALL|LANG'
case
、<lang>_<country>
フォーマットに適合する入力を指定することで、これを簡単に調整できます(おそらくそうすべきです)。次に、UTF-8を想定して、パススルーするだけです。整然としたソリューションに本当に熱心な場合は、ユーザー入力をチェックしてlocale -a
、要求されたロケールが実際にインストールされていることを確認する必要があります。
ターミナルを開いてCtrl+ Alt+ Tを入力します:
LANG=en_US.UTF-8 bash
または:
LC_ALL=C bash
これで、端末出力は英語になりました。で確認できlocale
ます。
パーマネントでalias
それをするコマンドを作ることは可能です。任意の.bashrc
エディターでファイルを開き、そこに次のコードを配置します。
alias basheng='LANG=en_US.UTF-8 bash'
または:
alias basheng='LC_ALL=C bash'
Bashシェルを再起動します。これでコマンドができましたbasheng
。Bashに入力して、英語のBashシェルを取得します。英語のシェルを終了するには、を入力しexit
ます。
ソース:
LANG
は設定だけでは不十分です。
LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bash
より良いですか?
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
。
これはロケール設定を介して構成され、環境変数を介して設定できます。変数には4つの層があります。最初に設定されたものが優先されます。
LANGUAGE
—使用しないでください。ほとんど有用ではなく、バグを引き起こす可能性があります。残念ながら、Ubuntuの一部のバージョンでは設定されているため、設定を解除する必要があります。LC_ALL
—カテゴリ固有の設定をオーバーライドします。これは主に、デフォルトのロケールで実行したいプログラムが使用することを意図しています。グローバル設定として使用するためのものではありません。LC_
:LC_CTYPE
、LC_MESSAGES
、LC_TIME
、...。LANG
—すべてのカテゴリのデフォルトロケールを設定します。これは、グローバルユーザー設定で使用するためのものです。すべてのメッセージが翻訳されていない「プレーン」ロケール、デフォルトの時刻および数値形式、文字セットとしてのASCIIなどが呼び出されC
ます。このロケールは、すべてのシステムに存在します。
したがって、英語のメッセージでプログラムを実行するには、次を実行します
unset LANGUAGE; LC_MESSAGES=C myprogram --option
または
unset LANGUAGE
export LC_MESSAGES=C
myprogram --option
myotherprogram
すべてのローカライズをオフにしてプログラムを実行するには、次を実行します
env -u LANGUAGE LC_ALL=C myprogram --option
ただし、これは文字エンコードをASCIIに切り替えることに注意してください(したがって、Unicode、latin-1などはありません)。
ロケールをどのように設定する必要があり、その意味は何ですか?を参照してください。ロケールのより詳細な概要については。
LANGUAGE
は、LC_ALL
プログラムLC_ALL
が予測可能な出力を取得し、期待される出力を取得していないために混乱するように設定されているため、バグよりも優先されることです。
LANGUAGE
それにも関わらず、設定は非常に悪い考えです。なぜなら、利点は非常に薄いのに対し、バグは迷惑で見つけにくいからです。あなたは正しいですが、設定解除について言及する必要がありLANGUAGE
ます。
最も簡単な方法は、Alt + F2を押して次のコマンドを実行してターミナルを開くことです。
env LANGUAGE=en gnome-terminal
あなたの ~/.bashrc
unset LC_ALL
export LC_MESSAGES=C
それから
source ~/.bashrc
確認してください
$ locale
LANG=pl_PL.utf8
LANGUAGE=
LC_CTYPE="pl_PL.utf8"
LC_NUMERIC="pl_PL.utf8"
LC_TIME="pl_PL.utf8"
LC_COLLATE="pl_PL.utf8"
LC_MONETARY="pl_PL.utf8"
LC_MESSAGES=C
LC_PAPER="pl_PL.utf8"
LC_NAME="pl_PL.utf8"
LC_ADDRESS="pl_PL.utf8"
LC_TELEPHONE="pl_PL.utf8"
LC_MEASUREMENT="pl_PL.utf8"
LC_IDENTIFICATION="pl_PL.utf8"
LC_ALL=
最初に設定解除する理由
LC_ALL個々のLC_ *設定を上書きします。LC_ALLが設定されている場合、以下のいずれも効果がありません。
LANG
このように変更することができます。著者が書いたものが英語であることが必要です(ただし、通常は質問を終了する代わりに翻訳します)。したがって、スペイン語の端末テキストで英語で書かれた質問は問題ありませんが、英語の端末テキストでスペイン語で書かれた質問はそうではありません。