<!--
     The FreeBSD Documentation Project
     The FreeBSD Japanese Documentation Project

     Original revision: 1.104
     $FreeBSD$
-->

<chapter id="l10n">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Andrey A.</firstname>
	<surname>Chernov</surname>
	<contrib>寄稿: </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Michael C.</firstname>
	<surname>Wu</surname>
	<contrib>改訂: </contrib>
      </author>
      <!-- 30 Nv 2000 -->
    </authorgroup>
  </chapterinfo>

  <title>地域化 (localization) - I18N/L10N の利用と設定</title>

  <sect1 id="l10n-synopsis">
    <title>この章では</title>

    <para>FreeBSD は、ユーザーおよび貢献者が世界中にいる、非常に分散した
      プロジェクトです。この章では、英語以外の言語を使うユーザーの実用に
      耐えられるようにする FreeBSD の国際化 (internationalization) と
      地域化 (localization) 機能について解説します。
      システムレベルでもアプリケーションレベルでも、国際化の実装には
      様々な側面があるので、必要に応じて読者に対してより専門的な文書情報を
      示すことにします。</para>

    <para>この章では、以下の分野について説明します。</para>
    <itemizedlist>
      <listitem><para>近代的なオペレーティングシステムで、異なる言語および
	  ロケールがどのように符号化されているか。</para></listitem>
      <listitem><para>ログインシェルでロケールを設定するには
	  どうするか。</para></listitem>
      <listitem><para>コンソールを英語以外の言語用に設定するには
	  どうするか。</para></listitem>
      <listitem><para>様々な言語で効率的に X Window System を使うには
	  どうすればよいか。</para></listitem>
      <listitem><para>国際化されたアプリケーションを書くための
	  情報はどこにあるか。</para></listitem>
    </itemizedlist>

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

    <itemizedlist>
      <listitem><para>サードパーティ製アプリケーションのインストール方法
	  (<xref linkend="ports">)。</para></listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="l10n-basics">
    <title>基礎知識</title>

    <sect2>
      <title>I18N/L10N とは?</title>
    <indexterm><primary>国際化(internationalization)</primary></indexterm>
    <indexterm><primary>地域化(localization)</primary></indexterm>

      <para>開発者たちはしばしば、internationalization を縮めて I18N
	と表記します。18 は internationalization の最初と最後の間の
	文字数です。L10N も同じ命名法を用いて
	<quote>localization</quote> を縮めたものです。
	これらを合わせて、I18N/L10N された (すなわち国際化/地域化された)
	手法、プロトコル、アプリケーションは、自分達の好みの言語を
	使うことを可能にしてくれます。</para>

      <para>国際化されたアプリケーションはライブラリとして国際化キット
	を用いてプログラミングされています。
	これは開発者が単純なファイルを書いて、
	表示されるメニューやテキストを各国語に翻訳できるようにしてくれます。
	プログラマのみなさんには、
	これらの方法を利用することを強く推奨します。</para>
    </sect2>

    <sect2>
      <title>なぜ I18N/L10N を使わなければいけないの?</title>

      <para>英語以外の言語を見たり、入力したり、処理したりする場合はいつでも、
	I18N/L10N が使われます。</para>
    </sect2>

    <sect2>
      <title>I18N で使えるようになる言語には何があるの?</title>

      <para>I18N や L10N は FreeBSD に限った話題ではありません。
	現在では、世界中の主要な言語のほとんどから選ぶことができます。
	たとえば中国語、ドイツ語、日本語、韓国語、フランス語、ロシア語、
	ベトナム語などがありますが、これらに限定されるわけではありません。</para>
      <indexterm><primary>ロケール(locale)</primary></indexterm>
    </sect2>
  </sect1>

  <sect1 id="using-localization">
    <title>地域化の利用</title>

    <para>I18N は FreeBSD に特有のものではなく、一つの考え方です。
      以下の慣習にしたがって FreeBSD を利用するようにしてください。</para>

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

    <programlisting><replaceable>言語コード</replaceable>_<replaceable>国コード</replaceable>.<replaceable>エンコーディング</replaceable></programlisting>

    <sect2>
      <title>言語コードと国コード</title>
      <indexterm><primary>言語コード</primary></indexterm>
      <indexterm><primary>国コード</primary></indexterm>

      <para>FreeBSD (やその他の国際化をサポートした &unix;-like なシステム)
	を特定の言語に地域化するには、
	国と言語を特定するためのコードを知る必要があります
	(Country Code はアプリケーションに指定された言語のどの変種
	(variation) を用いれば良いかを教えてくれます)。
	加えて、ウェブブラウザ、SMTP/POP サーバ、
	ウェブサーバなどもこれらを元に様々な選択を行います。
	以下は言語/国コードの例です。</para>

      <informaltable frame="none">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>言語/国コード</entry>
	      <entry>説明</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>en_US</entry>
	      <entry>英語 (合衆国)</entry>
	    </row>

	    <row>
	      <entry>ru_RU</entry>
	      <entry>ロシア語 (ロシア)</entry>
	    </row>

	    <row>
	      <entry>zh_TW</entry>
	      <entry>繁体字中国語 (台湾)</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

    </sect2>

    <sect2>
      <title>エンコーディング</title>
      <indexterm><primary>エンコーディング</primary></indexterm>
      <indexterm><primary>ASCII</primary></indexterm>

      <para>いくつかの言語では、8-bit やワイド文字、
	多バイト文字など ASCII とは異なったエンコード法を用います
	(&man.multibyte.3; 参照)。
	古いアプリケーションはこれらを認識せず、
	誤ってコントロール文字として認識してしまいます。
	最近のアプリケーションは、大抵 8-bit 文字を認識します。
	実装方法にも依りますが、アプリケーションのコンパイル時もしくは
	configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。
	ワイド/多バイト文字を入力したり処理したりすることを可能にするために、
	<ulink url="&url.base;/ports/index.html">FreeBSD Ports Collection</ulink>
	では各言語向けに異なったプログラムを提供しています。
	各 FreeBSD port の国際化文書を参照してください。
      </para>

      <para>特に、正しく configure したり、configure/Makefile/
	コンパイラに適切な値を渡すために、アプリケーションの
	文書を良く読む必要があります。</para>

      <para>次のことを心に留めておいてください。</para>

      <itemizedlist>
	<listitem>
	  <para>言語固有の、C 言語の char で表現できる
	    シングルバイトの文字セット
	    (&man.multibyte.3; を参照)、たとえば
	    ISO-8859-1, ISO-8859-15, KOI8-R, CP437。</para>
	</listitem>

	<listitem>
	  <para>ワイド、多バイトのエンコーディング、たとえば EUC, Big5。
	  </para>
	</listitem>
      </itemizedlist>

      <para>現在有効な文字セットのリストに関しては
	<ulink url="http://www.iana.org/assignments/character-sets">IANA Registry</ulink>
	をチェックしてください。</para>

      <note>
	<para>FreeBSD 4.5 以降では、
	  X11 互換のロケール符号を用いています。</para> </note>

    </sect2>

    <sect2>
      <title>国際化アプリケーション</title>

      <para>FreeBSD の ports/packages システムでは、
	それとひと目でわかるように国際化アプリケーションには名前に
	<literal>I18N</literal> という文字が含まれています。
	ただし、それらのアプリケーションが常にあなたの望む言語を
	サポートしているとは限りません。</para>
    </sect2>

    <sect2 id="setting-locale">
      <title>ロケールの設定</title>

      <para>通常は、ログインシェルで環境変数 <envar>LANG</envar> に
	ロケール名を設定し export すれば十分です。これは、ユーザーの
	<filename>~/.login_conf</filename> ファイル、またはユーザーの
	シェルの初期設定ファイル (<filename>~/.profile</filename>,
	<filename>~/.bashrc</filename>, <filename>~/.cshrc</filename>)
	でできます。
	<envar>LC_CTYPE</envar> や <envar>LC_CTIME</envar> のような
	ロケールのサブセットを設定する必要はありません。
	詳細に関しては、各言語向けの FreeBSD 文書を参照してください。</para>

      <para>以下の二つの環境変数を設定ファイルで指定する必要があります。</para>

      <itemizedlist>
	<indexterm><primary>POSIX</primary></indexterm>
	<listitem>
	  <para>&posix; &man.setlocale.3; 関連の関数のための
	    <envar>LANG</envar></para>
	</listitem>

	<indexterm><primary>MIME</primary></indexterm>
	<listitem>
	  <para>アプリケーション用の MIME 文字セットのための
	    <envar>MM_CHARSET</envar></para>
	</listitem>
      </itemizedlist>

      <para>これにはユーザのシェルの設定、アプリケーション固有の設定、
	X11 の設定などが含まれます。</para>

      <sect3>
	<title>ロケールを設定する方法</title>
	<indexterm><primary>ロケール (locale)</primary></indexterm>
	<indexterm><primary>ログインクラス</primary></indexterm>

	<para>ロケールを設定するには以下で説明するように、二つの方法があります。
	  一つは推奨される方法で、<link linkend="login-class">ログインクラス (login
	  class)</link> において環境変数に割り当てる方法。
	  もう一つはシステムのシェル
	  <link linkend="startup-file">初期化ファイル</link>
	  において環境変数の指定を追加する方法です。</para>

	<sect4 id="login-class">
	  <title>ログインクラスを用いる方法</title>

	  <para>この方法では、
	    各シェルの初期化ファイルに特定のシェル設定を追加する代わりに、
	    すべてのシェルにおいて一度に必要なロケール名と MIME
	    文字セットを環境変数に割り当てることができます。
	    <link linkend="usr-setup">ユーザの設定</link
	      >はユーザ自身で行なえますが、
	    <link linkend="adm-setup">管理者の設定</link
	      >にはスーパユーザの権限が必要となります。</para>

	  <sect5 id="usr-setup">
	    <title>ユーザの設定</title>

	    <para>ユーザのホームディレクトリの
	      <filename>.login_conf</filename> ファイルを用いて、
	      両方の変数に Latin-1 エンコーディングを設定する
	      簡単な例は次の通りです。</para>

	    <programlisting>me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:</programlisting>

	    <indexterm><primary>繁体字中国語 (Traditional Chinese)</primary><secondary>BIG-5 エンコーディング</secondary></indexterm>
	    <para>これは、BIG-5 エンコーディングされた繁体字中国語用の環境変数を設定する
	      <filename>.login_conf</filename> の一例です。
	      中国語、日本語、韓国語用のロケール変数を
	      正しく認識しないソフトウェアに対処するため、
	      よりたくさんの変数を設定していることに注目してください。</para>

	    <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:\
	:lc_all=zh_TW.Big:\
	: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=xcin": #Setting the XIM Input Server</programlisting>

	    <para>詳細に関しては
	      <link linkend="adm-setup">管理者の設定</link> と
		&man.login.conf.5; を参照してください。</para>
	  </sect5>

	  <sect5 id="adm-setup">
	    <title>管理者の設定</title>

	    <para><filename>/etc/login.conf</filename> において、
	      正しい言語がユーザのクラスに指定されていることを確認してください。
	      <filename>/etc/login.conf</filename> は、このようになります。</para>

	    <programlisting><replaceable>language_name</replaceable>:<replaceable>accounts_title</replaceable>:\
	:charset=<replaceable>MIME_charset</replaceable>:\
	:lang=<replaceable>locale_name</replaceable>:\
	:tc=default:</programlisting>

	    <para>先ほどの例のように Latin-1
	      での設定はこのようになります。</para>

	    <programlisting>german:German Users Accounts:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:</programlisting>

	    <bridgehead renderas=sect4>ログインクラスを &man.vipw.8; で変更する</bridgehead>

	    <indexterm>
	      <primary><command>vipw</command></primary>
	    </indexterm>

	    <para>新しいユーザを追加するために <command>vipw</command>
	      を用います。そして以下のようなエントリを作成します。</para>

	    <programlisting>user:password:1111:11:<replaceable>language</replaceable>:0:0:User Name:/home/user:/bin/sh</programlisting>

	    <bridgehead renderas=sect4>ログインクラスを &man.adduser.8; で変更する</bridgehead>

	    <indexterm>
	      <primary><command>adduser</command></primary>
	    </indexterm>
	    <indexterm><primary>ログインクラス</primary></indexterm>

	    <para>新しいユーザを追加するために <command>adduser</command>
	      を用います。そして以下の手順を踏みます。</para>

	    <itemizedlist>
	      <listitem>
		<para><filename>/etc/adduser.conf</filename> で
		  <literal>defaultclass = <replaceable>language</replaceable></literal>
		  と設定します。
		  この場合、他の言語のユーザには
		  <literal>default</literal> クラスを指定することを
		  忘れないでください。</para>
	      </listitem>

	      <listitem>
		<para>もうひとつの方法は、&man.adduser.8; が
<screen><prompt>Enter login class: default []: </prompt></screen>
		  と聞いてきたときに、毎回言語を指定するやり方です。</para>
	      </listitem>

	      <listitem>
		<para>さらに別の方法は、異なる言語を利用するユーザを
		  追加する際に、以下のようにするやり方です。</para>

		<screen>&prompt.root; <userinput>adduser -class <replaceable>language</replaceable></userinput></screen>
	      </listitem>
	    </itemizedlist>

	    <bridgehead renderas=sect4>ログインクラスを &man.pw.8; で変更する</bridgehead>

	    <indexterm>
	      <primary><command>pw</command></primary>
	    </indexterm>

	    <para>新しいユーザを追加するために &man.pw.8; を
	      用いる場合、以下の形式で実行します。</para>

	    <screen>&prompt.root; <userinput>pw useradd <replaceable>user_name</replaceable> -L <replaceable>language</replaceable></userinput></screen>
	  </sect5>
	</sect4>

	<sect4 id="startup-file">
	  <title>シェルの初期化ファイルによる方法</title>

	  <note>
	    <para>シェルごとに異なった設定が必要なため、
	      この方法は推奨されません。
	      代わりに <link linkend="login-class">ログインクラスを用いる方法</link
	      >を使ってください。</para>
	  </note>

	  <indexterm><primary>MIME</primary></indexterm>
	  <indexterm><primary>ロケール(locale)</primary></indexterm>
	  <para>ロケール名と MIME 文字コードを追加するには、
	    <filename>/etc/profile</filename> や
	    <filename>/etc/csh.login</filename> などのシェル初期化ファイル
	    に以下の二つの環境変数を設定します。
	    以下に示す例は、ドイツ語の設定です。</para>

	  <para><filename>/etc/profile</filename> では
            次のように設定します。</para>

	  <programlisting><envar>LANG=de_DE.ISO8859-1; export LANG</envar>
<envar>MM_CHARSET=ISO-8859-1; export MM_CHARSET</envar></programlisting>

	  <para>また <filename>/etc/csh.login</filename> では
            次のように設定します。</para>

	  <programlisting><envar>setenv LANG de_DE.ISO8859-1</envar>
<envar>setenv MM_CHARSET ISO-8859-1</envar></programlisting>

	  <para>もしくは、上記のやり方を
	    <filename>/usr/share/skel/dot.profile</filename>
	    (<filename>/etc/profile</filename> と同形式) や
	    <filename>/usr/share/skel/dot.login</filename>
	    (<filename>/etc/csh.login</filename> と同形式)
	    に追加することもできます。</para>

	  <para>X11 では、
	    <filename>$HOME/.xinitrc</filename> に
	    使用しているシェルに合った形式で</para>

	  <programlisting><envar>LANG=de_DE.ISO8859-1; export LANG</envar></programlisting>

	  <para>もしくは、</para>

	  <programlisting><envar>setenv LANG de_DE.ISO8859-1</envar></programlisting>

	  <para>と指定します。</para>

	</sect4>
      </sect3>
    </sect2>

    <sect2 id="setting-console">
      <title>コンソールの設定</title>

      <para>C 言語の char で表現できるシングルバイトの文字セット用に、
	<filename>/etc/rc.conf</filename>
	でその言語に対応した適切なコンソールフォントを指定してください。</para>

      <programlisting>font8x16=<replaceable>フォント名</replaceable>
font8x14=<replaceable>フォント名</replaceable>
font8x8=<replaceable>フォント名</replaceable></programlisting>

      <para>ここで <replaceable>フォント名</replaceable>
	は <filename>/usr/share/syscons/fonts</filename> ディレクトリ
	にあるフォントファイルから <filename>.fnt</filename>
	という拡張子を除いたものです。</para>

      <indexterm>
	<primary><application>sysinstall</application></primary>
      </indexterm>
      <indexterm><primary>keymap</primary></indexterm>
      <indexterm><primary>screenmap</primary></indexterm>
      <para>また、<filename>/stand/sysinstall</filename>
	を使って、C 言語の char で表現できるシングルバイトの文字セット用の正しい
	キーマップとスクリーンマップを指定するようにしてください。
	<application>sysinstall</application> では、<guimenuitem>Configure</guimenuitem>
	を選択し、<guimenuitem>Console</guimenuitem> を選択します。
	もしくは、<filename>/etc/rc.conf</filename>
	に以下の行を加えてください。</para>

      <programlisting>scrnmap=<replaceable>スクリーンマップ名</replaceable>
keymap=<replaceable>キーマップ名</replaceable>
keychange="<replaceable>ファンクションキー番号の並び</replaceable>"</programlisting>

      <para>ここで <replaceable>スクリーンマップ名</replaceable>
	は <filename>/usr/share/syscons/scrnmaps</filename> ディレクトリ
	にあるマップファイルから <filename>.scm</filename>
	という拡張子を除いたものです。
	VGA アダプタが疑似グラフィクス領域のフォント文字マトリクスで
	bit 8 を bit 9 に拡張することに対処するために
	(例えばスクリーンフォントが
	bit 8 列を使っている時に文字をその領域から外に移動する場合)、
	フォントに適切にマップされたスクリーンマップが必要となります。
      </para>

      <para>もし、<filename>/etc/rc.conf</filename> を以下のように設定して、
	<application>moused</application> デーモンを有効化している場合は、
	次の段落に書かれているマウスカーソルに関する情報を確認してください。</para>

<programlisting>moused_enable="YES"</programlisting>

      <indexterm>
	<primary><application>moused</application></primary>
      </indexterm>
      <para>設定省略時には、&man.syscons.4; ドライバのマウスカーソルは
	キャラクタセット中の 0xd0-0xd3 の範囲を占めています。そのため、
	利用している言語がこの範囲のキャラクタセットを使っている場合、
	カーソルの占める範囲を重ならないように移動させなければなりません。
	5.0 より前のバージョンの FreeBSD では、
	次の行をカーネルコンフィグレーションファイルに追加することで対処できます。</para>

      <programlisting>options         SC_MOUSE_CHAR=0x03</programlisting>

      <para>FreeBSD 4.4 以降の場合は、<filename>/etc/rc.conf</filename>
	に次の行を追加してください。</para>

      <programlisting>mousechar_start=3</programlisting>

      <para><replaceable>キーマップ名</replaceable> は
	<filename>/usr/share/syscons/keymaps</filename>
	ディレクトリにあるキーマップファイルから <filename>.kbd</filename>
	という拡張子を除いたものです。
	どのキーマップを使うかよくわからないなら、&man.kbdmap.1;
	で再起動せずにキーマップを試すことができます。</para>

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

      <para>また、<filename>/etc/ttys</filename> の中のすべての
	<literal>ttyv*</literal> において、
	正しいコンソール端末タイプを設定するようにしてください。
	現在の定義済の値は以下の通りです。</para>

      <informaltable frame="none">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>文字セット</entry>
	      <entry>端末タイプ</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>ISO-8859-1 もしくは ISO-8859-15</entry>
	      <entry><literal>cons25l1</literal></entry>
	    </row>

	    <row>
	      <entry>ISO-8859-2</entry>
	      <entry><literal>cons25l2</literal></entry>
	    </row>

	    <row>
	      <entry>ISO-8859-7</entry>
	      <entry><literal>cons25l7</literal></entry>
	    </row>

	    <row>
	      <entry>KOI8-R</entry>
	      <entry><literal>cons25r</literal></entry>
	    </row>

	    <row>
	      <entry>KOI8-U</entry>
	      <entry><literal>cons25u</literal></entry>
	    </row>

	    <row>
	      <entry>CP437 (VGA のデフォルト)</entry>
	      <entry><literal>cons25</literal></entry>
	    </row>

	    <row>
	      <entry>US-ASCII</entry>
	      <entry><literal>cons25w</literal></entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

      <para>ワイド/多バイト文字の言語については、
	<filename>/usr/ports/<replaceable>language</replaceable></filename>
	内の適切な FreeBSD port を利用してください。
	いくつかの ports はシステムからシリアルの vtty
	のように見えるようにコンソールとして振る舞います。
	したがって、X11 と疑似シリアルコンソール用に充分な
	vtty を確保しておかなければなりません。
	コンソールで他の言語を使うためのアプリケーションのリストの
	一部です。</para>

      <informaltable frame="none">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>言語</entry>
	      <entry>ports の位置</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>繁体字中国語 (BIG-5)</entry>
	      <entry><filename role="package">chinese/big5con</filename></entry>
	    </row>

	    <row>
	      <entry>日本語</entry>
	      <entry><filename role="package">japanese/kon2-16dot</filename> または
		<filename role="package">japanese/mule-freewnn</filename></entry>
	    </row>

	    <row>
	      <entry>韓国語</entry>
	      <entry><filename role="package">korean/han</filename></entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>
    </sect2>

    <sect2>
      <title>X11 の設定</title>

      <para>X11 は FreeBSD プロジェクトの一部ではありませんが、
	FreeBSD ユーザのための情報を記しておきます。
	詳細に関しては、<ulink url="http://www.xfree86.org/">&xfree86;
	  ウェブサイト</ulink>や、あなたの使っている
	X11 サーバのサイトを参照してください。</para>

      <para><filename>~/.Xresources</filename> を使うことで、
	アプリケーション固有の国際化の設定 (フォント、メニューなど)
	を追加することができます。</para>

      <sect3>
	<title>フォントの表示</title>
	<indexterm><primary>X11 True Type フォントサーバ</primary></indexterm>

	<para><application>&xorg;</application> サーバ
	  (<filename role="package">x11-servers/xorg-server</filename>) か
	  <application>&xfree86;</application> サーバ
	  (<filename role="package">x11-servers/XFree86-4-Server</filename>)
	  をインストールし、言語の &truetype; フォントをインストールします。
	  ロケールを正しく設定すれば、
	  選んだ言語がメニューなどに表示されるはずです。</para>
      </sect3>

      <sect3>
	<title>非英語の文字を入力する</title>

	<indexterm><primary>X11 Input Method (XIM)</primary></indexterm>
	<para>X11 Input Method (XIM) プロトコルはすべての X11
	  クライアント用の新たな標準規格です。
	  すべての X11 アプリケーションは XIM 入力サーバからの入力を受け取る
	  XIM クライアントとして書かれるべきです。
	  様々な言語用の XIM サーバが存在します。</para>
      </sect3>
    </sect2>

    <sect2>
      <title>プリンタの設定</title>

      <para>プリンタにはいくつかの C 言語の char で表現できる
	シングルバイトの文字セットがハードウェアに組み込まれています。
	ワイド/多バイトの文字セットでは特殊な設定が必要であり、
	<application>apsfilter</application> を使うことをお勧めします。
	言語固有のコンバータを用いて、&postscript; か PDF フォーマット
	に文書をコンバートする場合もあるでしょう。</para>
    </sect2>

    <sect2>
      <title>カーネルとファイルシステム</title>

      <para>FreeBSD の高速ファイルシステム (FFS) は 8-bit 透過であり、
	C 言語の char で表現できるいかなる文字セットも使うことが
	できます (&man.multibyte.3; を参照)。
	しかし、ファイルシステム中には文字セットの名前は記録されていません。
	したがって、これは単なる 8-bit であり、
	エンコーディングに関しては何の情報もないのです。
	公式には、FFS
	はまだいかなるワイド/マルチバイトの文字セットもサポートしていません。
	しかし FFS でそのようなサポートを行うためのパッチが、
	多くのワイド/マルチバイトの文字セットに存在します。
	それらは単に一時的で汎用性のない解決策であり、
	わたしたちはそれらをソースツリーに含めないことを決めています。
	これらのパッチに関しては、各言語のウェブサイトを参照してください。
      </para>

      <indexterm><primary>DOS</primary></indexterm>
      <indexterm><primary>Unicode</primary></indexterm>
      <para>FreeBSD の &ms-dos; ファイルシステムでは、
	&ms-dos;, Unicode 文字セット、FreeBSD ファイルシステムの
	文字セットの間で変換を行うことが可能です。
	詳細は &man.mount.msdos.8; を参照してください。</para>
    </sect2>
  </sect1>

  <sect1 id="l10n-compiling">
    <title>国際化に対応したプログラムのコンパイル</title>

    <para>FreeBSD ports の多くはすでに国際化されています。
      いくつかには port の名前に -I18N と付いています。
      これらはもちろんのこと、他のプログラムも国際化への対応を組み込んだものがあり、
      コンパイルに際して特別な注意を払う必要はありません。</para>

    <indexterm>
      <primary><application>MySQL</application></primary>
    </indexterm>
    <para>しかし、<application>MySQL</application> のようなアプリケーションでは、
      特定の文字セットを使うように <filename>Makefile</filename>
      を設定する必要があります。
      これは大抵 <filename>Makefile</filename> の中で
      対処されているか、ソース中の <application>configure</application>
      に値を渡すことで対応しています。</para>
  </sect1>

  <sect1 id="lang-setup">
    <title>FreeBSD を特定の言語に地域化する</title>

    <sect2 id="ru-localize">
      <sect2info>
 	<authorgroup>
	  <author>
	    <firstname>Andrey A.</firstname>
	    <surname>Chernov</surname>
	    <contrib>原作: </contrib>
	  </author>
	</authorgroup>
      </sect2info>
      <title>ロシア語 (KOI8-R エンコーディング)</title>
      <indexterm>
	<primary>地域化</primary>
	<secondary>ロシア語</secondary>
      </indexterm>

      <para>KOI8-R エンコーディングの詳細については、
	<ulink url="http://koi8.pp.ru/">KOI8-R References
	  (Russian Net Character Set)</ulink> を参照してください。</para>

      <sect3>
	<title>ロケールの設定</title>

	<para>以下の行を
	  <filename>~/.login_conf</filename> に追加してください。</para>

	<programlisting>me:My Account:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:</programlisting>

	<para><link linkend="setting-locale">ロケール</link> を
	  設定する際の例については、この章の前の方を参照してください。
	</para>
      </sect3>

      <sect3>
	<title>コンソールの設定</title>

	<itemizedlist>
	  <listitem>
	    <para>FreeBSD 5.0 より前のバージョンの場合は、
	      次の行をカーネルコンフィグファイルに追加します。</para>

	    <programlisting>options		SC_MOUSE_CHAR=0x03</programlisting>

	    <para>FreeBSD 4.4 以降のバージョンの場合は、
	      <filename>/etc/rc.conf</filename> に次の行を追加します。</para>

	    <programlisting>mousechar_start=3</programlisting>
	  </listitem>

	  <listitem>
	    <para><filename>/etc/rc.conf</filename> で以下のように
	      設定してください。</para>

	    <programlisting>keymap="ru.koi8-r"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"</programlisting>

	  </listitem>

	  <listitem>
	    <para><filename>/etc/ttys</filename> の各
	      <literal>ttyv*</literal> エントリにおいて、
	      端末タイプとして <literal>cons25r</literal>
	      を指定してください。</para>
	  </listitem>
	</itemizedlist>

	<para><link linkend="setting-console">コンソール</link
	    >を設定する際の例については、この章の前の方を参照してください。
	</para>
      </sect3>

      <sect3>
	<title>プリンタの設定</title>
	<indexterm><primary>プリンタ</primary></indexterm>

	<para>ロシア語用の文字を搭載したプリンタはほとんど
	  ハードウェアコードページ CP866 を使っているため、
	  KOI8-R を CP866 に変換する専用の出力フィルタが必要となります。
	  このフィルタはデフォルトで
	  <filename>/usr/libexec/lpr/ru/koi2alt</filename> に
	  インストールされています。
	  ロシア語用のプリンタの <filename>/etc/printcap</filename>
	  エントリは以下のようになります。</para>

	<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:</programlisting>

	<para>記述の詳細については &man.printcap.5;
	  を参照してください。</para>
      </sect3>

      <sect3>
	<title>&ms-dos; ファイルシステムとロシア語ファイル名</title>

	<para>以下の &man.fstab.5; エントリの例は、マウントされた
	  &ms-dos; ファイルシステムにおいてロシア語ファイル名を
	  使えるようにします。</para>

	<programlisting>/dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0</programlisting>

	<para><option>-L</option> オプションは利用するロケール名を選択し、
	  <option>-W</option> オプションは文字変換表を設定します。
	  <option>-W</option> オプションを使う時は、変換表が
	  <filename>/usr/libdata/msdosfs</filename> にあるので、
	  <filename>/usr</filename> を &ms-dos; パーティションより前に
	  マウントするようにしてください。詳しくは、
	  &man.mount.msdos.8; のマニュアルを参照してください。</para>
      </sect3>

      <sect3>
	<title>X11 の設定</title>

	<orderedlist>
	  <listitem>
	    <para>まず <link linkend="setting-locale"
		>X 以外のロケールの設定</link>を行ってください。</para>

	    <note>
	      <para><anchor id="russian-note">ロシア語の KOI8-R
		ロケールは古い <application>&xfree86;</application> のリリース (3.3 より前)
		では動作しないかもしれません。
		現在は <application>&xfree86; 4.X</application> が FreeBSD の
		デフォルトの X Window System です。
		これは古いバージョンの FreeBSD を使っていない限り
		起こり得ないことです。</para>
	    </note>
	  </listitem>

	  <listitem>
	    <para><filename role="package">russian/X.language</filename>
	      ディレクトリに移動し、
	      以下のコマンドを実行してください。</para>

	    <screen>&prompt.root; <userinput>make install</userinput></screen>

	    <para>上記の port は最新版の KOI8-R フォントをインストール
	      します。<application>&xfree86; 3.3</application> には
	      既に KOI8-R フォントが含まれていますが、
	      こちらの方がより良く拡縮されます。</para>

	    <para><filename>/etc/XF86Config</filename> ファイルの
	      <literal>"Files"</literal>
	      セクションをチェックしてください。
	      既存の <literal>FontPath</literal>
	      エントリの<emphasis>前に</emphasis>以下の行を追加しなければなりません。</para>

	    <programlisting>FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"</programlisting>

	    <para>もし高解像度のビデオモードを使っている場合には、
	      75 dpi と 100 dpi の行を入れ替えてください。</para>
	  </listitem>

	  <listitem>
	    <para>ロシア語のキーボードを使えるようにするには、
	      以下の行を <filename>XF86Config</filename> ファイルの
	      <literal>"Keyboard"</literal> セクションに追加します。</para>

	    <para><application>&xfree86; 3.X</application> の場合:</para>

	    <programlisting>XkbLayout  "ru"
XkbOptions "grp:caps_toggle"</programlisting>

	    <para><application>&xfree86; 4.X</application> の場合:</para>

	    <programlisting>Option "XkbLayout"   "ru"
Option "XkbOptions"  "grp:caps_toggle"</programlisting>

	    <para>また、<literal>XkbDisable</literal> が無効
	      (コメントアウト) になっていることを確認してください。
	    </para>

	    <para>ロシア語/ラテン文字の切り替えは <keycap>CapsLock</keycap>
	      で行います。従来の <keycap>CapsLock</keycap>
	      の機能は <keycombo action="simul"><keycap>Shift</keycap><keycap>CapsLock</keycap></keycombo>
	      で使うことができます (ラテン文字モードの時のみ)。
	    </para>

	    <para>キーボードに <quote>&windows;</quote> キーがあり、
	      ロシア語モードでそのキーにいくつかの非英字キーが
	      割り当てられているようなら、<filename>XF86Config</filename>
	      ファイルに以下の行を追加してください。</para>

	    <para><application>&xfree86; 3.X</application> の場合:</para>

	    <programlisting>XkbVariant "winkeys"</programlisting>

	    <para><application>&xfree86; 4.X</application> の場合:</para>

	    <programlisting>Option "XkbVariant" "winkeys"</programlisting>

	    <note>
	      <para>ロシア語の XKB キーボードは古いバージョンの
		<application>&xfree86;</application> ではうまく動かないかも知れません。
		詳しくは<link linkend="russian-note">前述の
		  注釈</link>を参照してください。
		ロシア語の XKB キーボードは、
		地域化されていないアプリケーションでもうまく動かないかも知れません。
		地域化されたアプリケーションは少なくともプログラムの最初の方で
		<function>XtSetLanguageProc (NULL, NULL, NULL);</function>
		を呼び出すべきです。
		X11 アプリケーションを地域化する方法については、
		<ulink url="http://koi8.pp.ru/xwin.html">
		KOI8-R for X Window</ulink>
		を参照してください。</para>
	    </note>
	  </listitem>
	</orderedlist>
      </sect3>
    </sect2>

    <sect2>
      <title>台湾向けの繁体字中国語への地域化</title>
      <indexterm>
	<primary>地域化</primary>
	<secondary>繁体字中国語</secondary>
      </indexterm>

      <para>FreeBSD-Taiwan プロジェクトは、多くの
	中国語 ports を利用した、
	FreeBSD を中国語化するための手引き
	<ulink url="http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/"></ulink>
	を提供しています。
	<literal>FreeBSD Chinese HOWTO</literal> の現在の編集者は
	Shen Chuan-Hsing <email>statue@freebsd.sinica.edu.tw</email> です。</para>

      <para>Chuan-Hsing Shen <email>statue@freebsd.sinica.edu.tw</email> は
	FreeBSD-Taiwan の <literal>zh-L10N-tut</literal> を使って
	<ulink url="http://netlab.cse.yzu.edu.tw/~statue/cfc/">Chinese
	  FreeBSD Collection (CFC)</ulink> を作成しました。
	パッケージとスクリプトは
	<ulink url="ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/"></ulink>
	から入手できます。</para>
    </sect2>

    <sect2>
      <title>ドイツ語への地域化 (すべての ISO 8859-1 言語向け)</title>
      <indexterm>
	<primary>地域化</primary>
	<secondary>ドイツ語</secondary>
      </indexterm>

      <para>Slaven Rezic <email>eserte@cs.tu-berlin.de</email> は
	FreeBSD マシン上でウムラウトを使うためのチュートリアルを書きました。
	チュートリアルはドイツ語で書かれており、
	<ulink url="http://www.de.FreeBSD.org/de/umlaute/"></ulink>
	から入手できます。</para>
    </sect2>

    <sect2>
      <title>日本語/韓国語への地域化</title>
      <indexterm>
	<primary>地域化</primary>
	<secondary>日本語</secondary>
      </indexterm>
      <indexterm>
	<primary>地域化</primary>
	<secondary>韓国語</secondary>
      </indexterm>
      <para>日本語に関しては
	<ulink url="http://www.jp.FreeBSD.org/"></ulink>
	を、韓国語に関しては
	<ulink url="http://www.kr.FreeBSD.org/"></ulink>
	を参照してください。</para>
    </sect2>

    <sect2>
      <title>英語以外の FreeBSD ドキュメント</title>

      <para>FreeBSD の一部を他の言語に翻訳してくれている人たちがいます。
	これらは <ulink url="&url.base;/index.html">メインサイト</ulink>のリンクを辿るか
	<filename>/usr/share/doc</filename>
	から入手できます。</para>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
