◆ ローカライゼーションとは
国や地域に応じた言語、日付、通貨単位などはロケールと呼ばれる表記規則として扱われます。そして
言語、日付、通貨単位などを国や地域に合わせることを、ローカライゼーションと言います。国ごとに
ローカライゼーションを行うのは大変ですが、最近のソフトウェアはあらかじめ多言語、多地域に対応
するように作成されています。これを国際化(internationalization)と言います。i18nとも呼ばれます。
◆ ロケール
ロケール(利用者の地域情報)は以下の通りカテゴリに分類されており、これらのカテゴリは個々に
設定することができるので、例えばメッセージは日本語であるが日付や通貨単位は英語にするという
ようなことができます。全てのカテゴリに同じ値を適用するためには、環境変数LANGまたはLC_ALL
を設定する必要があります。主なロケール用の環境変数には以下のようなものがあります。
環境変数 |
説明 |
LANG |
言語の設定 |
LC_CTYPE |
文字の種類、大文字/小文字の変換などの文字属性を定義 |
LC_MESSAGES |
出力されるメッセージの言語を指定 |
LC_MONETARY |
通貨に関する規定 |
LC_NUMERIC |
数値の書式に関する規定 |
LC_TIME |
日付や時刻の書式に関する規定 |
LC_ALL |
ロケールの環境変数すべて |
現在のロケール設定は、localeコマンドにより確認することができます。
◆ 構文 : locale [ オプション ] ユーザー名
オプション |
説明 |
-a |
設定できるロケールを全て表示 |
-m |
利用できる文字コードを全て表示 |
$ 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=
|
上記出力からして、現在のlocale設定は全てen_US.UTF-8(英語(米)/Unicode)であると分かります。
en_US.UTF-8以外に設定できる主なロケール設定の値には、以下のような値があります。
ロケールの設定値 |
説明 |
C |
英語 |
en_US.UTF-8 |
英語(米)/Unicode |
ja_JP.utf8 |
日本語/Unicode |
ja_JP.eucJP |
日本語/EUC-JP |
ja_JP.shiftJIS |
日本語/ShiftJIS |
ロケール環境変数全てをja_JP.utf8(日本語)にする設定例は以下の通りです。この設定を行った場合、
LANGを除いて、LC_〜の全ての環境変数の値が以下のように変更されることになります。以下のように
LC_ALLの環境変数を使用して設定した場合は、個別のロケール設定は行えなくなるで注意が必要です。
$ export LC_ALL=ja_JP.utf8
$ locale
LANG=en_US.UTF-8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=ja_JP.utf8
|
LANGについても、ja_JP.utf8(日本語)にしたい場合は以下のように設定を行います。
◆ 文字コード
文字コードとは、コンピュータ上で文字を利用するために各文字に割り当てたバイトコードのことです。
文字コード |
説明 |
ASCII |
7ビットで表現される。128種類の英数字、記号、制御コードで構成される。 |
Unicode |
32ビットで表現される。1つの文字コード体系で多言語処理を可能にするための文字コード。 |
UTF-8 |
Unicodeを使用した文字コード。1文字を1バイトから6バイトで表示する。 |
EUC-JP |
UNIX環境で標準的に使用していた日本語の文字コード |
ShiftJIS |
WindowsやMacOSで使用される日本語の文字コード |
ISO-2022-JP |
電子メールなどでよく使用される日本語の文字コード(JISコード) |
ISO-8859 |
ASCIIを拡張した8ビットの文字コードで256種類の文字を表現できる。 |
多くのディストリビューションでは、文字コードとしてUTF-8が使用されていますが、日本ではいくつかの
文字コードが混在しているのでWindowsで作成したファイルをLinuxで開くと文字化けすることがあります。
また、ディストリビューションによってはUTF-8以外の文字コードを使用しているものもあり、文字コード
を変換させる必要もあります。文字コードを変換するためには、iconvコマンドを使用します。
◆ 構文 : iconv [ オプション ] [ファイル名]
オプション |
説明 |
-l |
変換できる文字コードの一覧を表示 |
-f 入力文字コード |
変換元の文字コード。from。 |
-t 出力文字コード |
変換後の文字コード。to。 |
-o ファイル名 |
文字コード変換した文字列を出力するファイル名。 |
◆ 実行例 : EUC-JPで作成されたファイル「 abc.txt 」を、UTF-8に変換してファイル「 def.txt 」として保存
$ iconv -f eucjp -t utf8 abc.txt > def.txt |
◆ タイムゾーン
地域ごとに区分された標準時間帯をタイムゾーンと言います。タイムゾーンの情報は /usr/share/zoneinfo
ディレクトリ配下のバイナリファイルに格納されています。Linuxで利用するタイムゾーンは上記ファイル
を、/etc/localtimeにコピーすることで設定するか、シンボリックリンクを作成することで定義できます。
◆ 実行例 : 日本のタイムゾーンの設定
# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime |
◆ 実行例 : 日本のタイムゾーンの設定 - シンボリックリンクによる作成
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime |
または、tzselectコマンドを使用することで、一覧から表示される情報をもとにタイムゾーンを設定できます。
$ tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 19
Therefore TZ='Asia/Tokyo' will be used.
Local time is now: 2013年 11月 11日 月曜日 23:57:56 JST.
Universal Time is now: 2013年 11月 11日 月曜日 14:57:56 UTC.
Is the above information OK?
1) Yes
2) No
#? 1
|
また、tzconfigコマンドでもタイムゾーンを設定することができます。tzconfigコマンドを実行すると
/etc/localtime と /etc/timezone の値をまとめて変更することになります。tzconfigコマンド処理は
以下の順番で処理されます。
1. tzconfigコマンド実行時に選択したタイムゾーンファイルを /etc/localtimeファイルにセットする。
2. /etc/timezone ファイル内に、tzconfigコマンド実行時に選択したタイムゾーン設定を書き込む。
|