---
title: 第15章 地域化 (localization) - i18n/L10n の利用と設定
part: パートIII. システム管理
prev: books/handbook/disks
next: books/handbook/cutting-edge
description: FreeBSD は多くの言語への地域化に対応しており、 ユーザは、英語以外の言語を見たり、入力したり、処理したりできます。
tags: ["i18n", "L10n", "localization", "Locale", "LANG", "MM_CHARSET", "cap_mkdb"]
showBookMenu: true
weight: 19
params:
  path: "/books/handbook/l10n/"
---

[[l10n]]
= 地域化 (localization) - i18n/L10n の利用と設定
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 15
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/l10n/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[l10n-synopsis]]
== この章では

FreeBSD は、 ユーザーおよび貢献者が世界中に分散したプロジェクトです。 そのため、FreeBSD は多くの言語への地域化に対応しており、 ユーザは、英語以外の言語を見たり、入力したり、処理したりできます。 中国語、ドイツ語、日本語、韓国語、フランス語、ロシア語、 ベトナム語など、主要な言語のほとんどから選ぶことができますが、 これらに限定されるわけではありません。

internationalization は、i18n と短縮して表記されます。 これは `internationalization` の最初と最後の間の文字数に由来します。 L10n も同じ命名法を用いて `localization` を縮めたものです。 i18n/L10n された (すなわち国際化/地域化された) 手法、プロトコル、アプリケーションは、 自分達の好みの言語を使うことを可能にしてくれます。

この章では、FreeBSD の国際化 (internationalization) と地域化 (localization) 機能について解説します。 この章では、以下の分野について説明します。

* ロケール名がどのように定義されるか。
* ログインシェルでロケールを設定するにはどうするか。
* コンソールを英語以外の言語用に設定するにはどうするか。
* 様々な言語で Xorg を設定するにはどうすればよいか。
* 国際化 (i18n) されたアプリケーションの見つけ方。
* 特定の言語に設定するための情報はどこにあるか。

この章を読む前に、以下のことを理解しておく必要があります。

* crossref:ports[ports,サードパーティ製アプリケーションのインストール方法]

[[using-localization]]
== 地域化の利用

地域化の設定は、言語コード、 国コード、エンコーディングという三つの要素を基本とします。 ロケール名はこれらから以下のように構成されます。

[.programlisting]
....
言語コード_国コード.エンコーディング
....

_言語コード_ および _国コード_ は、 国と言語を特定するために用いられます。 <<locale-lang-country>> では、 _言語コード___国コード_ の例を示します

[[locale-lang-country]]
.言語および国コード
[cols="1,1", frame="none", options="header"]
|===
| 言語_国コード
| 説明

|en_US
|英語、合衆国

|ru_RU
|ロシア語、ロシア

|zh_TW
|繁体字中国語、台湾
|===

利用可能なすべてのロケールを調べるには、 以下のように実行してください。

[source,shell]
....
% locale -a | more
....

現在のロケールの設定を調べるには、 以下のコマンドを実行してください。

[source,shell]
....
% locale
....

言語固有の、C 言語の char で表現できる ISO8859-1, ISO8859-15, KOI8-R, CP437 といったシングルバイトの文字セットについては、 man:multibyte[3] を参照してください。 現在有効な文字セットのリストは、link:http://www.iana.org/assignments/character-sets[IANA Registry] で確認できます。

いくつかの言語 (例えば中国語や日本語) は、 ASCII 文字では表すことができないので、 ワイド文字や多バイト文字を用いた拡張された言語のエンコードが必要となります。 ワイド/多バイトのエンコーディングの例は、EUC および Big5 です。 古いアプリケーションの中には、 これらのエンコードを誤ってコントロール文字として認識するものがありますが、 最近のアプリケーションは、大抵これらの文字を認識します。 実装方法にも依りますが、アプリケーションのコンパイル時もしくは configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。

[NOTE]
====
FreeBSD では、Xorg 互換のロケール符号を用いています。
====

以下では、FreeBSD システムにおいてロケールを設定する方法について説明します。 次の節では、i18n に対応するアプリケーションの見つけ方およびコンパイル方法について説明します。

[[setting-locale]]
=== ログインシェルでロケールを設定する

ロケールの設定は、ユーザの [.filename]#~/.login_conf#、 またはユーザのシェルの初期設定ファイルである [.filename]#~/.profile#, [.filename]#~/.bashrc# または [.filename]#~/.cshrc# で行います。

以下の二つの環境変数を設定する必要があります。

* `LANG`: ロケールを設定します。
* `MM_CHARSET`: アプリケーションで使用される MIME 文字セットを指定します。

これらの変数は、ユーザのシェルの設定ファイルに加え、 アプリケーション固有の設定ファイル、 および Xorg の設定ファイルにおいても指定される必要があります。

必要な変数を割り当てるには、二つの方法があります。 <<login-class,ログインクラス>> において割り当てる方法 (推奨される方法です)、および <<startup-file,初期化ファイル>> で指定する方法です。 次の 2 つの節では、この両方の方法について説明します。

[[login-class]]
==== ログインクラスを用いる方法

最初に説明する方法は、 すべてのシェルにおいて必要なロケール名と MIME 文字セットを環境変数に割り当てます。 これは推奨される方法です。 この割り当て方法としては、各ユーザが行う方法と、 スーパーユーザがすべてのユーザに対して設定する 2 つの方法があります。

以下の簡単な例では、 各ユーザのホームディレクトリの [.filename]#.login_conf# で、両方の変数に Latin-1 エンコーディングを設定します。

[.programlisting]
....
me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:
....

これは、BIG-5 エンコーディングされた繁体字中国語用の環境変数を設定するユーザの [.filename]#~/.login_conf# の一例です。 中国語、日本語、 韓国語用のロケール変数を正しく認識しないソフトウェアに対応するため、 より多くの変数に対する設定が行われています。

[.programlisting]
....
#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
me:\
	:lang=zh_TW.Big5:\
	:setenv=LC_ALL=zh_TW.Big5,LC_COLLATE=zh_TW.Big5,LC_CTYPE=zh_TW.Big5,LC_MESSAGES=zh_TW.Big5,LC_MONETARY=zh_TW.Big5,LC_NUMERIC=zh_TW.Big5,LC_TIME=zh_TW.Big5:\
	:charset=big5:\
	:xmodifiers="@im=gcin": #Set gcin as the XIM Input Server
....

もう一つの方法では、 スーパーユーザがシステム上のすべてのユーザに対する地域化を設定します。 [.filename]#/etc/login.conf# の以下の変数により、ロケールおよび MIME 文字セットを設定します。

[.programlisting]
....
language_name|Account Type Description:\
	:charset=MIME_charset:\
	:lang=locale_name:\
	:tc=default:
....

よって、先ほどの例における Latin-1 に対する設定は、 以下のようになります。

[.programlisting]
....
german|German Users Accounts:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:
....

詳細に関しては man:login.conf[5] を参照してください。 なお、_russian_ クラスはあらかじめ定義されています。

[.filename]#/etc/login.conf# を編集したら、 忘れずに以下のコマンドを実行してケイパビリティデータベースをアップデートしてください。

[source,shell]
....
# cap_mkdb /etc/login.conf
....

[NOTE]
====
エンドユーザは、変更を反映させるために、各自の [.filename]#~/.login_conf# に対して `cap_mkdb` コマンドを実行する必要があります。
====

===== ログインクラスを変更するユーティリティ

[.filename]#/etc/login.conf# を手動により編集する方法に加え、 新たに作成するユーザのロケールを設定するためのユーティリティがあります。

`vipw` を使って新しいユーザを追加する際には、使用する言語を _language_ に指定してください。

[.programlisting]
....
user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh
....

`adduser` を使って新しいユーザを追加する場合に、 すべてのユーザに対するデフォルトの言語は事前に設定でき、 個々のユーザに対する言語を指定できます。

新しく追加するすべてのユーザが同じ言語を使う場合には、 [.filename]#/etc/adduser.conf# で `defaultclass=_language_` と設定してください。

新しいユーザを作成するときに、この設定を変更するには、 以下のプロンプトにおいて希望するロケールを指定してください。

[source,shell]
....
Enter login class: default []:
....

もしくは、`adduser` を実行する際にロケールを指定してください。

[source,shell]
....
# adduser -class language
....

`pw` を使って新しいユーザを追加する場合には、 以下のようにしてロケールを指定してください。

[source,shell]
....
# pw useradd user_name -L language
....

すでに存在するユーザのログインクラスを変更するには、 `chpass` を使用してください。 引数として変更するユーザ名を与えて、 スーパーユーザの権限で実行してください。

[source,shell]
....
# chpass user_name
....

[[startup-file]]
==== シェルの初期化ファイルによる方法

この 2 番目の方法は、 使用するシェルごとに手動での設定が必要なため、推奨されません。 シェル毎に設定ファイルが存在し、その構文はシェルに依存します。 たとえば、`sh` シェルに対するドイツ語の設定では、 そのユーザのシェルを設定するためだけに、 [.filename]#~/.profile# に以下の行を追加ます。 これらの行を [.filename]#/etc/profile# または、 [.filename]#/usr/share/skel/dot.profile# に追加すると、 すべてのユーザのシェルを設定することが可能です。

[.programlisting]
....
LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET
....

しかしながら、`csh` シェルでは、 設定ファイルの名前や構文は異なります。 [.filename]#~/.login#, [.filename]#/etc/csh.login# または [.filename]#/usr/share/skel/dot.login# では同じ設定です。

[.programlisting]
....
setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1
....

さらに面倒なことに、 Xorg を設定するための [.filename]#~/.xinitrc# における構文は、 使用しているシェルに依存します。 以下の例において、最初は `sh` シェルに対するもので、2 番目が `csh` シェルに対するものです。

[.programlisting]
....
LANG=de_DE.ISO8859-1; export LANG
....

[.programlisting]
....
setenv LANG de_DE.ISO8859-1
....

[[setting-console]]
=== コンソールの設定

コンソールで利用可能な地域化されたフォントがあります。 利用できるフォントの一覧を調べるには、 `ls /usr/share/syscons/fonts` と入力してください。 コンソールのフォントを設定するには、 [.filename]#.fnt# という拡張子を除いた _フォント名_ を、 [.filename]#/etc/rc.conf# に設定してください。

[.programlisting]
....
font8x16=フォント名
font8x14=フォント名
font8x8=フォント名
....

以下を [.filename]#/etc/rc.conf# に追加することで、 キーマップおよびスクリーンマップを指定できます。

[.programlisting]
....
scrnmap=スクリーンマップ名
keymap=キーマップ名
keychange="ファンクションキー番号の並び"
....

利用可能なスクリーンマップの一覧を調べるには、 `ls /usr/share/syscons/scrnmaps` と入力してください。 [.filename]#/etc/rc.conf# で _スクリーンマップ名_ を指定する時は、 [.filename]#.csm# という拡張子を除いてください。 スクリーンフォントが bit 8 列を使っている時に文字を疑似グラフィクス領域から外に移動するように、 VGA アダプタがフォント文字マトリクスで bit 8 を bit 9 に拡張することに対処するため、 フォントに適切にマップされたスクリーンマップが必要となります。

利用可能なキーマップの一覧を調べるには、 `ls /usr/share/syscons/keymaps` と入力してください。 [.filename]#/etc/rc.conf# で _キーマップ名_ を指定する時には、 [.filename]#.kbd# という拡張子を除いてください。 再起動せずにキーマップを試すには、 man:kbdmap[1] を使ってください。

ファンクションキーの並びはキーマップで定義されていないので、 端末タイプに合わせたファンクションキーを設定するために `keychange` のエントリが必要となります。

次に [.filename]#/etc/ttys# の中のすべての仮想端末のエントリに対して、 正しいコンソール端末タイプを設定してください。<<locale-charset>> は、 利用可能な端末タイプの一覧です。

[[locale-charset]]
.文字セットに対する定義済みの端末タイプ
[cols="1,1", frame="none", options="header"]
|===
| 文字セット
| 端末タイプ

|ISO8859-1 もしくは ISO8859-15
|`cons25l1`

|ISO8859-2
|`cons25l2`

|ISO8859-7
|`cons25l7`

|KOI8-R
|`cons25r`

|KOI8-U
|`cons25u`

|CP437 (VGA のデフォルト)
|`cons25`

|US-ASCII
|`cons25w`
|===

ワイド/多バイト文字の言語については、 その言語に対するコンソールを FreeBSD Ports Collection からインストールしてください。 利用可能な ports は、<<locale-console>> にまとめてあります。 インストール後、各 port の [.filename]#pkg-message# または、マニュアルページを参照して、 設定や使用方法を調べてください。

[[locale-console]]
.Ports Collection で利用可能なコンソール
[cols="1,1", frame="none", options="header"]
|===
| 言語
| port の位置

|繁体字中国語 (BIG-5)
|package:chinese/big5con[]

|中国語/日本語/韓国語
|package:chinese/cce[]

|中国語/日本語/韓国語
|package:chinese/zhcon[]

|日本語
|package:chinese/kon2[]

|日本語
|package:japanese/kon2-14dot[]

|日本語
|package:japanese/kon2-16dot[]
|===

[.filename]#/etc/rc.conf# において moused を有効にしている場合には、 追加の設定が必要となるでしょう。 デフォルトでは、man:syscons[4] ドライバのマウスカーソルはキャラクタセット中の `0xd0`-`0xd3` の範囲を占めています。そのため、 利用している言語がこの範囲のキャラクタセットを使っている場合、 次の行を [.filename]#/etc/rc.conf# に追加して カーソルの占める範囲を移動してください。

[.programlisting]
....
mousechar_start=3
....

=== Xorg の設定

Xorg のインストールおよび設定方法は、 crossref:x11[x11,X Window System] で説明されています。 Xorg を地域化するための追加のフォントおよび入力方法は、 FreeBSD Ports Collection から利用できます。 フォント、メニューなどのアプリケーション固有の国際化 (i18n) の設定は、 [.filename]#~/.Xresources# において指定でき、 グラフィカルアプリケーションのメニューが選んだ言語で表示されます。

X Input Method (XIM) プロトコルは、Xorg で非英字文字を入力するための標準規格です。 FreeBSD Ports Collection から利用可能なインプットメソッドについては、 <<locale-xim>> にまとめられています。 追加の Fcitx および Uim アプリケーションも利用できます。

[[locale-xim]]
.利用可能なインプットメソッド
[cols="1,1", frame="none", options="header"]
|===
| 言語
| インプットメソッド

|中国語
|package:chinese/gcin[]

|中国語
|package:chinese/ibus-chewing[]

|中国語
|package:chinese/ibus-pinyin[]

|中国語
|package:chinese/oxim[]

|中国語
|package:chinese/scim-fcitx[]

|中国語
|package:chinese/scim-pinyin[]

|中国語
|package:chinese/scim-tables[]

|日本語
|package:japanese/ibus-anthy[]

|日本語
|package:japanese/ibus-mozc[]

|日本語
|package:japanese/ibus-skk[]

|日本語
|package:japanese/im-ja[]

|日本語
|package:japanese/kinput2[]

|日本語
|package:japanese/scim-anthy[]

|日本語
|package:japanese/scim-canna[]

|日本語
|package:japanese/scim-honoka[]

|日本語
|package:japanese/scim-honoka-plugin-romkan[]

|日本語
|package:japanese/scim-honoka-plugin-wnn[]

|日本語
|package:japanese/scim-prime[]

|日本語
|package:japanese/scim-skk[]

|日本語
|package:japanese/scim-tables[]

|日本語
|package:japanese/scim-tomoe[]

|日本語
|package:japanese/scim-uim[]

|日本語
|package:japanese/skkinput[]

|日本語
|package:japanese/skkinput3[]

|日本語
|package:japanese/uim-anthy[]

|韓国語
|package:korean/ibus-hangul[]

|韓国語
|package:korean/imhangul[]

|韓国語
|package:korean/nabi[]

|韓国語
|package:korean/scim-hangul[]

|韓国語
|package:korean/scim-tables[]

|ベトナム語
|package:vietnamese/xvnkb[]

|ベトナム語
|package:vietnamese/x-unikey[]
|===

[[l10n-compiling]]
== 国際化 (i18n) に対応したアプリケーションを見つける

国際化 (i18n) されたアプリケーションは、ライブラリとして i18n 化キットを用いてプログラミングされます。 これは開発者が単純なファイルを書いて、 表示されるメニューやテキストを各国語に翻訳できるようにしてくれます。

link:https://www.FreeBSD.org/ja/ports/[FreeBSD Ports Collection ] の多くのアプリケーションは、 いくつかの言語向けのワイド/多バイト文字への対応を組み込んでいます。 そのようなアプリケーションの名前には、 容易に認識できるように、`-i18n` と付いています。しかしながら、 それらのアプリケーションが必要とする言語に対応しているとは限りません。

いくつかのアプリケーションでは、 特定の文字セットを使うようにコンパイルできます。 これは大抵 [.filename]#Makefile# の中で 対処されているか、configure に値を渡すことで対応しています。 必要な configure の値や port の構築時に使用するコンパイルオプションを決めるための port の [.filename]#Makefile# に関するより詳細な情報については、 各 FreeBSD port のソースにある i18n 文書を参照してください。

[[lang-setup]]
== 特定の言語にロケールを設定する

この節では、FreeBSD システムをロシア語へ地域化するための設定例を示します。 後半では、他の言語への地域化に関する情報を提供します。

[[ru-localize]]
=== ロシア語 (KOI8-R エンコーディング)

この節では、FreeBSD システムをロシア語へ地域化するための設定例を示します。 各設定に関するより詳しい説明については、 <<using-localization,地域化の利用>> を参照してください。

このロケールをログインシェルに設定するには、 以下の行を各ユーザの [.filename]#~/.login_conf# に追加してください。

[.programlisting]
....
me:My Account:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:
....

コンソールを設定するには、 [.filename]#/etc/rc.conf# に以下の行を追加してください。

[.programlisting]
....
keymap="ru.utf-8"
scrnmap="utf-82cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
mousechar_start=3
....

[.filename]#/etc/ttys# の各 `ttyv` エントリにおいて、 端末タイプとして `cons25r` を指定してください。

プリンタの設定を行うには、 ロシア語用の文字を搭載したほとんどのプリンタはハードウェアコードページ CP866 を使っているため、KOI8-R を CP866 に変換する専用の出力フィルタが必要となります。 この目的のため、FreeBSD はデフォルトフィルタを [.filename]#/usr/libexec/lpr/ru/koi2alt# にインストールします。 このフィルタを使うには、[.filename]#/etc/printcap# に以下のエントリを追加してください。

[.programlisting]
....
lp|Russian local line printer:\
	:sh:of=/usr/libexec/lpr/ru/koi2alt:\
	:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:
....

より詳細な説明については man:printcap[5] を参照してください。

マウントされた MS-DOS(R) ファイルシステムにおいてロシア語ファイル名を使えるように設定するには、 [.filename]#/etc/fstab# にエントリを追加するときに、 以下のように `-L` とロケール名を含めてください。

[.programlisting]
....
/dev/ad0s2      /dos/c  msdos   rw,-Lru_RU.KOI8-R 0 0
....

詳しくは、man:mount_msdosfs[8] を参照してください。

Xorg にロシア語のフォントを設定するには、 package:x11-fonts/xorg-fonts-cyrillic[] パッケージをインストールしてください。 その後、[.filename]#/etc/X11/xorg.conf# の `"Files"` セクションを確認してください。 既存の `FontPath` エントリの_前に_以下の行を追加しなければなりません。

[.programlisting]
....
FontPath   "/usr/local/lib/X11/fonts/cyrillic"
....

他の Cyrillic フォントは、 Ports Collection から利用できます。

ロシア語のキーボードを使えるようにするには、 以下の行を [.filename]#xorg.conf# の `"Keyboard"` セクションに追加します。

[.programlisting]
....
Option "XkbLayout"   "us,ru"
Option "XkbOptions"  "grp:toggle"
....

このファイルの中で `XkbDisable` がコメントアウトされていることを確認してください。

`grp:toggle` では kbd:[Right Alt] を使い、 `grp:ctrl_shift_toggle` では kbd:[Ctrl+Shift] を使います。 `grp:caps_toggle` では、 kbd:[CapsLock] を使います。 従来の kbd:[CapsLock] の機能は、 ラテン文字モードの時のみ kbd:[Shift+CapsLock] で使うことができます。 Xorg では、理由は不明ですが `grp:caps_toggle` は動作しません。

キーボードに "Windows(R)" キーがあり、 そのキーにいくつかの非英字キーが割り当てられているようなら、 [.filename]#xorg.conf# に以下の行を追加してください。

[.programlisting]
....
Option "XkbVariant" ",winkeys"
....

[NOTE]
====
ロシア語の XKB キーボードは、 地域化されていないアプリケーションではうまく動かないかも知れません。 地域化されたアプリケーションは少なくともプログラムの最初の方で `XtSetLanguageProc (NULL, NULL, NULL);` を呼び出すべきです。
====

Xorg アプリケーションを地域化する方法については、link:http://koi8.pp.ru/xwin.html[http://koi8.pp.ru/xwin.html] を参照してください。 KOI8-R エンコーディングの詳細については、link:http://koi8.pp.ru/[http://koi8.pp.ru/] を参照してください。

=== 言語固有のリソース

この節では、 他言語へのロケールの設定に関するリソースの一覧を示します。

台湾向けの繁体字中国語への地域化::
FreeBSD-Taiwan プロジェクトは、 FreeBSD を中国語化するための手引き link:http://netlab.cse.yzu.edu.tw/\~statue/freebsd/zh-tut/[http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/] を提供しています。

ギリシャ語への地域化::
FreeBSD におけるギリシャ語のサポートについての記事は、 公式の FreeBSD ギリシャ語ドキュメンテーションの一部として link:https://docs.FreeBSD.org/el/articles/greek-language-support/[ここ] で読むことができます。 この文書は、ギリシャ語で書かれています。

日本語/韓国語への地域化::
日本語に関しては link:http://www.jp.FreeBSD.org/[http://www.jp.FreeBSD.org/] を、韓国語に関しては link:http://www.kr.FreeBSD.org/[http://www.kr.FreeBSD.org/] を参照してください。

英語以外の FreeBSD ドキュメント::
FreeBSD の文書の一部を他の言語に翻訳してくれている貢献者たちがいます。 これらは link:https://www.FreeBSD.org/ja/[FreeBSD ウェブサイト] のリンクを辿るか [.filename]#/usr/share/doc# から入手できます。
