1. ホーム
  2. コース一覧
  3. LinuC Level1 v10.0 対策コース(パート2)
  4. 国際化とローカライゼーション及び環境変数の設定

LinuC Level1 v10.0 対策コース(パート2)16/29

国際化とローカライゼーション及び環境変数の設定

こちらでは、国際化とローカライゼーション、環境変数の設定について解説します。

国際化は、製品が地域や国の文化や慣習に合わせ、切り替えて設定できるように設計することを指します。具体的には、言語や日時、通貨などの設定を変更できるようにし、製品が複数の地域で利用できるようにすることを意味します。

ローカライズとは、システムの入出力における言語、日時、通貨などを特定の地域や国に対応させ、またデザインやインターフェースもその地域に適応するよう最適化することを指します。

ロケールとは

ローカライゼーションに対応する情報をロケールと呼びます。例えば日本では言語は日本語、通貨は円を利用するといった情報となります。

製品やアプリケーションは、これらのロケールの情報(ロケール環境変数)を基に言語や通貨の設定を行います。主なロケール環境変数には以下があります。

環境変数名説明
LANG言語の設定
LC_CTYPE文字の種類、大文字/小文字の変換などの文字属性
LC_MESSAGES出力されるメッセージの言語
LC_MONETARY通貨に関する規定
LC_NUMERIC数値の書式に関する規定
LC_TIME日付や時刻の書式に関する規定
LC_ALLロケールの環境変数すべて

ロケールの確認

localeコマンド

localeコマンドで、現在のロケールの設定を確認できます。

locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

ロケール設定の変更

ロケールの変更は、LC_ALLかLANGに値を設定します。それぞれの違いについて解説します。

LC_ALLに値を設定すると、その値が他の環境変数の値を上書きします。そのため、LC_ALLを設定した場合、他の環境変数で個別の設定を行うことはできません。すべての環境変数を同じ値に設定したい場合に、LC_ALLを使用します。

一方、LANGに値を設定すると、未指定の他の環境変数の値は自動的にLANGの値となりますが、これらの環境変数には個別の値を設定することが可能です。通常、LANGにはデフォルト値が設定されています。

設定の変更

ロケール設定は export 環境変数=値 の形式で設定します。ただし、この方法で設定した値は次回のログイン時にはリセットされてしまいます。設定を永続化するには、システムの設定ファイルに環境変数を設定する必要があります。

export LC_TIME=C

設定が反映されたかを確認する

locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME=C   #設定が変更されている
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=    #LC_ALLが設定されていないため個別での設定の変更が可能

iconv

iconv は、Linux環境で特定の文字コードのファイルを別の文字コードに変換するために使用します。 iconv -f 変換前文字コード -t 変換後文字コード 入力ファイル で実行します。

使用出来る文字コードの確認

iconv -l

  437, 500, 500V1, 850, 851, 852, 855, 856, 857, 858, 860, 861, 862, 863, 864,
  865, 866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3,
  8859_4, 8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993,
  10646-1:1993/UCS4, ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4,
  ANSI_X3.110-1983, ANSI_X3.110, ARABIC, ARABIC7, ARMSCII-8, ASCII, ASMO-708,
  ASMO_449, BALTIC, BIG-5, BIG-FIVE, BIG5-HKSCS, BIG5, BIG5HKSCS, BIGFIVE, BRF,
  BS_4730, CA, CN-BIG5, CN-GB, CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273,
  CP274, CP275, CP278, CP280, CP281, CP282, CP284, CP285, CP290, CP297, CP367,
 <省略>
  IEC_P271, INIS-8, INIS-CYRILLIC, INIS, INIS8, INISCYRILLIC, ISIRI-3342,
  ISIRI3342, ISO-2022-CN-EXT, ISO-2022-CN, ISO-2022-JP-2, ISO-2022-JP-3,
  ISO-2022-JP, ISO-2022-KR, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4,
 <省略>
  SEN_850200_B, SEN_850200_C, SHIFT-JIS, SHIFT_JIS, SHIFT_JISX0213, SJIS-OPEN,
  SJIS-WIN, SJIS, SS636127, STRK1048-2002, ST_SEV_358-88, T.61-8BIT, T.61,
  T.618BIT, TCVN-5712, TCVN, TCVN5712-1, TCVN5712-1:1993, THAI8, TIS-620,
  TIS620-0, TIS620.2529-1, TIS620.2533-0, TIS620, TS-5881, TSCII, TURKISH8,
  UCS-2, UCS-2BE, UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UCS2, UCS4, UHC, UJIS, UK,
  UNICODE, UNICODEBIG, UNICODELITTLE, US-ASCII, US, UTF-7, UTF-8, UTF-16,
  UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE, UTF7, UTF8, UTF16, UTF16BE,
  UTF16LE, UTF32, UTF32BE, UTF32LE, VISCII, WCHAR_T, WIN-SAMI-2, WINBALTRIM,
  WINDOWS-31J, WINDOWS-874, WINDOWS-936, WINDOWS-1250, WINDOWS-1251,
  WINDOWS-1252, WINDOWS-1253, WINDOWS-1254, WINDOWS-1255, WINDOWS-1256,
  WINDOWS-1257, WINDOWS-1258, WINSAMI2, WS2, YU

Shift-JISをUTF-8への変換

iconv -f SJIS -t UTF-8 sample.txt #変換してターミナルに出力
iconv -f SJIS -t UTF-8 sample.txt > utf8.txt #変換してファイルに保存

主な文字コード

codedescription
UTF-8Unicodeの符号化方式の一つで、ASCIIとの互換性を維持しながらより多くの文字を表現することを目的としています。ASCIIと互換性が高いため、世界中で多くのソフトウェアが用いています。
ISO-8859主にヨーロッパで使われる文字を格納した、8ビットの文字コードです。
ASCIIASCIIは一文字を7ビットで表現し、オリジナルでは8ビット目は通常は使用されず、通信エラーの検出等に使われることもあります。アルファベット、数字、記号、空白文字、制御文字などの128文字を表現することができます
UnicodeUnicodeは文字を表現するのに可変長バイトを用い、アルファベット、漢字、カナ、アラビア文字など世界中の文字を表現することが可能です。ISOで規格化されておりJavaやXMLは基本コードとしてUnicodeを採用しています。
ISO-2022-JPインターネット上(特にメール)で使われる、日本語用の符号化方式です。
Shift-JIS日本で広く使われる文字コードで、Microsoft Windowsの日本語版では標準的に使われています。
CP932Microsoft WindowsにおけるShift-JISの拡張版で、一部の文字がShift-JISと異なります。
EUC-JP日本語用の文字コードで、かつてLinuxやUnix系のOSでよく使われました。現在でも一部の古いシステムやアプリケーション、特定の目的のためのシステムでは依然として使われていますが、新しいシステムやアプリケーションを開発する際には多くの場合UTF-8が採用されます。

まとめ

国際化とローカライゼーション、ロケールの設定について解説しました。

国際化は、製品が地域や国の文化や慣習に合わせて切り替えて設定できるように設計することを指します。ローカライゼーションは入出力するシステムの言語や日時、通貨などを地域や国に対応させることや、デザイン・インターフェースも地域に応じて最適化することを指します。ロケール環境変数を用いて、製品やアプリケーションの言語や通貨を地域ごとに設定することができます。

記事の内容は理解できましたか?