コマンド出力言語を母国語から英語に切り替える


84

コマンド出力言語を母国語から英語に切り替えるには、Ubuntuの質問に英語のコマンド出力(エラーメッセージ)を投稿できますか?


5
これはやや誤解を招く恐れがあります。実際に人々がこれを行う必要はありません。(この方法でOPに負担をかける必要があると思われる場合は、そのように指示する前にメタに投稿してください。)LANGこのように変更することができます著者が書いたものが英語であること必要です(ただし、通常は質問を終了する代わりに翻訳します)。したがって、スペイン語の端末テキストで英語で書かれた質問は問題ありませんが、英語の端末テキストでスペイン語で書かれた質問はそうではありません。
エリアカガン

4
@EliahKaganはい、あなたは正しいですが、とにかく私はそれが便利だと思います。
バズディ

2
私は同意します、人々がこれを行うことができるのは便利です、そしてあなたはこの質問を投稿してくれました!ただし、これを行う必要がないことを知っていることが重要です(ただし、質問と回答自体は英語で書く必要があります)。
エリアカガン

8
@EliahKaganそれどころか、実際のエラーメッセージを投稿することは非常に重要であり、英語で投稿することは非常に望ましいことです。なぜなら、それはこのサイトの主な視聴者が認識してテストできるからです。(そして、決して、再翻訳されたエラーメッセージを投稿しないでください。正確な言葉遣い、句読点、さらには間隔が重要になる可能性があるため、常にコピーアンドペーストしてください。)
Gilles 14年

回答:



13

端末のbash関数

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_ALLLANG、3つの環境変数すべてを変更することをお勧めしLANGUAGEます。

あなたの言語に適応する

コードを母国語に拡張するのは非常に簡単です。次のコマンドを呼び出すと、必要な値を見つけることができます

env |egrep -e 'LC_ALL|LANG'

スクリプトはドイツ語(DE)以外の言語に変更する必要がありますか?母国語に依存しないソリューションを探しています。
バズディー

@ BuZZ-dEE:を捨ててcase<lang>_<country>フォーマットに適合する入力を指定することで、これを簡単に調整できます(おそらくそうすべきです)。次に、UTF-8を想定して、パススルーするだけです。整然としたソリューションに本当に熱心な場合は、ユーザー入力をチェックしてlocale -a、要求されたロケールが実際にインストールされていることを確認する必要があります。
ビットマスク

@バズ・ディー:更新の答えを参照
H.-ディルク・シュミット

7

ターミナルを開いて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は設定だけで不十分です。
ビットマスク

@bitmaskはこれです:LANG=en_US.UTF-8 && LC_ALL=en_US.UTF-8 && LANGUAGE=en_US.UTF-8 bashより良いですか?
バズディー

2
実際、それはであるべきですLANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LANGUAGE=en_US.UTF-8 $SHELL
ビットマスク

LC_ALL = C bashのみが機能します。
リキッド

5

これはロケール設定を介して構成され、環境変数を介して設定できます。変数には4つの層があります。最初に設定されたものが優先されます。

  • LANGUAGE—使用しないでください。ほとんど有用ではなく、バグを引き起こす可能性があります。残念ながら、Ubuntuの一部のバージョンでは設定されているため、設定を解除する必要があります。
  • LC_ALL—カテゴリ固有の設定をオーバーライドします。これは主に、デフォルトのロケールで実行したいプログラムが使用することを意図しています。グローバル設定として使用するためのものではありません。
  • 始まるカテゴリー固有の変数LC_LC_CTYPELC_MESSAGESLC_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を使用しないのですか?どのOSを使用しているかわかりませんが、Ubuntuでは、インストーラーとさまざまなGUIを介して常にデフォルトでLANGUAGEが使用されます。ところで、どのバグですか?また、リンク先の回答も読んでおり、有用な一般情報が含まれている場合でも、Ubuntuデスクトップでの推奨事項は適切ではありません。
グンナルHjalmarsson 14年

@GunnarHjalmarssonの主な問題LANGUAGEは、LC_ALLプログラムLC_ALLが予測可能な出力を取得し、期待される出力を取得していないために混乱するように設定されているため、バグよりも優先されることです。
ジル14年

まあ、Ubuntu GUIはLANGとLANGUAGEの両方を一貫して設定し(そしてLC_MESSAGESはLANGを継承します)、この種の混乱を防ぐ必要があります。LANGUAGEが設定されている理由は、言語サポートに優先順位リストを設定するためのインターフェースがあるためです。
グンナルHjalmarsson 14年

@GunnarHjalmarsson私は知っています。LANGUAGEそれにも関わらず、設定は非常に悪い考えです。なぜなら、利点は非常に薄いのに対し、バグは迷惑で見つけにくいからです。あなたは正しいですが、設定解除について言及する必要がありLANGUAGEます。
ジル14年

ここでの回答は、設計の問題を議論する適切な場所ではありません。そのような議論は、例えばubuntu-devel-discussでより良く開催されます。ユーザーに役立つように、最適と思われるかどうかにかかわらず、答えは現在のデザインに基づいているべきだと本当に思います。また、「一部のバージョン」は、Kubuntuを除き、Ubuntuデスクトップおよび派生製品のすべてのサポートされているバージョンであることに注意してください。
グンナルHjalmarsson 14年


1

あなたの ~/.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が設定されている場合、以下のいずれも効果がありません。

https://help.ubuntu.com/community/Locale


この回答がなぜ投票されたのかはわかりません。はい、それはもう少し説明を使用できますが、受け入れられた答えとは異なり、それを永続化する方法を示し、より具体的です。
ゼロス

0
  1. 左側の歯車アイコンをクリックします(Unityパネルのシステム設定)
  2. 言語サポートをクリックします
  3. 地域形式を選択
  4. 「表示番号、日付、通貨額...」を英語に設定します。
  5. セッションをログアウトして、再度ログインします(必須!)

できた

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.