tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【Mac】`Warning: Failed to set locale category LC_XX to en_JP.`というエラー(Warning)が出るとき

はじめに

英語勉強のため、
少しでも英語に触れようとmacの言語設定を英語に変更しました。

そこから、vimを開くと以下のようなエラーが出るようになったので対応メモです。

Warning: Failed to set locale category LC_NUMERIC to en_JP.

目次

  1. なにをしたか
  2. どんなエラーか
  3. どう対応したか
  4. ロケールとは
  5. LANG環境変数
  6. locale

1. なにをしたか

macの言語設定を日本語->英語に変更しました。

以下の順で設定を開きます。

システム環境設定 > 言語と地域

f:id:tweeeety:20200321055410p:plain

希望の言語を「優先する言語」リストの先頭にドラッグします

f:id:tweeeety:20200321055426p:plain

これで再起動後、PCのデフォルト言語が英語に切り替わります。

2. どんなエラーか

GUIで使っている分には特に何も起きていませんでした。

しかし、vimを開こうとすると以下のようなエラーが出るようになりました。

$ vim
Warning: Failed to set locale category LC_NUMERIC to en_JP.
Warning: Failed to set locale category LC_TIME to en_JP.
Warning: Failed to set locale category LC_COLLATE to en_JP.
Warning: Failed to set locale category LC_MONETARY to en_JP.
Warning: Failed to set locale category LC_MESSAGES to en_JP.

エラーと記載してますが、Warningなので気にしなければそのままvimは動作します。 しかし、毎回出るので直したくなります。

3. どう対応したか

対応は簡単で、~/.bash_profileに環境変数LANGを設定するだけです。

# 設定前のlocale確認
# おそらく英語に変えた事で変わってしまったと思われる
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

$ vim ~/.bash_profile
-- vi編集 --
export LANG=ja_JP.UTF-8
------------

# 設定後のlocale確認
$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=

4. ロケールとは

各言語などの地域情報を「ロケール」と呼びます。
日本の場合現在では「ja_JP.UTF-8」という文字コードです。

このja_JP.UTF-8が何を表しているかというと以下のフォーマットになっています。

言語_国.文字コード

5. LANG環境変数

上記のja_JP.UTF-8ですが、LANG環境変数に設定します。

LANG系の環境変数は、
2. どんなエラーかにも記載したとおりいくつかあります。

LANGLC_ALLは特殊なものとなっています。
LC_ALLが設定された場合は、全てのローカライゼーション系環境変数は必ずその値が使用されます。
LANGの場合は、LC_TIMEなどを個別に設定して上書きが可能です。

6. locale

localeコマンドは現在のロケールを一覧表示します。
locale -aで利用可能なロケール名を表示します。

参考サイト

おわりに

PCを英語に変えたので英語学習に向けて頑張ります\(^o^)/