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

     Original revision: 1.58
     $FreeBSD: doc/ja_JP.eucJP/books/handbook/l10n/chapter.sgml,v 1.13 2001/06/11 01:20:13 ache Exp $
-->

<chapter id="l10n">
  <title>地域化 (localization) - I18N/L10N の利用/設定方法</title>

  <para><emphasis>寄稿: &a.ache;</emphasis></para>

  <para><emphasis>改訂: &a.keichii;,
    2000 年 11 月 30 日.</emphasis></para>

  <sect1>
    <title>この章では</title>

    <para>ハンドブックのこの章では, 様々な国の様々な設定に対する
      FreeBSD の国際化 (internationalization) と地域化 (localization)
      について解説します.
      システムのデフォルトである英語以外の言語を使いたい場合,
      ユーザはシステムを適切に設定しなければなりません.
      各言語に対する言語サポートは, 対象によりずいぶん異なることに
      注意してください.
      各言語を担当している各国の FreeBSD ユーザグループに
      問い合わせるといいでしょう.</para>

    <note>
      <title>訳注</title>

      <para>原文に記述されているような, 各国語に対して責任を負っている
        ユーザグループは存在しませんが, 日本語に関する問題などは
        &a.jp.users-jp; などで質問するといいでしょう.</para>
    </note>

    <para>FreeBSD の国際化に関して, 完全に説明することは不可能です.
      システム/アプリケーションの両方のレベルにおいて,
      様々な段階の国際化の実装がなされているため,
      各文書, マニュアルページ, README などを参照することをお勧めします.</para>

    <para>この章に関して質問や提案などがありましたら, 著者にメール
      してください.</para>
  </sect1>

  <sect1>
    <title>基礎知識</title>

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

      <para>開発者たちはしばしば, internationalization を縮めて I18N
	と表記します.  18 は internationalization の最初と最後の間の
	文字数です.
	L10N も同じ命名法を用いて "localization" を縮めています.
	これらを合わせて, 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)
        を特定の言語に地域化するには,
        国と言語を特定するためのコードを知る必要があります
        (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="ports/">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="ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets">IANA Registry</ulink>
	をチェックしてください.</para>
    </sect2>

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

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

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

      <para>理論的に必要なのは, 各ユーザの <filename>~/.login_conf</filename>
	や, ログインシェルの設定ファイル
	(<filename>~/.profile</filename>,
	<filename>~/.bashrc</filename>, <filename>~/.cshrc</filename>)
	で <envar>LANG</envar> にロケール名を設定し, export することだけです.
	これによりロケールのサブセット
	(<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>german:German User:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO_8859-1:</programlisting>

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

	    <programlisting>#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
taiwan:Taiwanese User:\
	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.ISO_8859-1:\
	:tc=default:</programlisting>

	    <indexterm><primary>vipw</primary></indexterm>
	    <para>ログインクラスを &man.vipw.8; で変更します.</para>

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

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

	    <indexterm><primary>adduser</primary></indexterm>
	    <indexterm><primary>ログインクラス</primary></indexterm>
	    <para>ログインクラスを &man.adduser.8; で変更します.</para>

	    <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>

	    <indexterm><primary>pw</primary></indexterm>
	    <para>ログインクラスを &man.pw.8; で変更します.</para>

	    <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.ISO_8859-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.ISO_8859-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 では:</para>

	  <para><filename>$HOME/.xinitrc</filename> に:</para>

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

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

	  <programlisting><envar>setenv LANG de_DE.ISO_8859-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>sysinstall</primary></indexterm>
      <indexterm><primary>keymap</primary></indexterm>
      <indexterm><primary>screenmap</primary></indexterm>
      <para>また, <filename>/stand/sysinstall</filename>
	を使って, C 言語の char で表現できるシングルバイトの文字セット用の正しい
        キーマップとスクリーンマップを指定するようにしてください.
	sysinstall では, <literal>Configure</literal>
	を選択し, <literal>Console</literal> を選択します.
	もしくは, <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> を以下のように設定して,
        moused デーモンを有効化している場合は,
        次の段落に書かれているマウスカーソルに関する情報を確認してください.</para>

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

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

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

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

      <programlisting>mousechar_start=3</programlisting>

      <para><replaceable>キーマップ名</replaceable> は
	<filename>/usr/share/syscons/keymaps</filename>
        ディレクトリにあるキーマップファイルから <filename>.kbd</filename>
	という拡張子を除いたものです.</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>KOI8-R</entry>
	      <entry><literal>cons25r</literal></entry>
	    </row>

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

	    <row>
	      <entry>CP437 (ハードウェアのデフォルト)</entry>
	      <entry><literal>cons25</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>/usr/ports/chinese/big5con</filename></entry>
	    </row>

	    <row>
	      <entry>日本語</entry>
	      <entry><filename>/usr/ports/japanese/ja-kon2-*</filename> or
	        <filename>/usr/ports/japanese/Mule_Wnn</filename></entry>
	    </row>

	    <row>
	      <entry>韓国語</entry>
	      <entry><filename>/usr/ports/korean/ko-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>X11 True Type 共通サーバ (XTT-common)
          をインストールし, 言語の 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>
    <title>より進んだ話題</title>

    <para>国際化に対応したアプリケーションをコンパイルしたり,
      作成することを考えているなら, このセクションを読んでみてください.
    </para>

    <sect2>
      <title>国際化に対応したプログラムのコンパイル</title>

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

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

    <sect2>
      <title>国際化に対応したアプリケーションのプログラミング</title>
      <indexterm><primary>Qt</primary></indexterm>
      <indexterm><primary>GTK</primary></indexterm>

      <para>あなたのアプリケーションを,
        他の言語を話す人たちにとっても有用なものにするには,
        国際化に対応したものにするといいでしょう.
	GNU の gcc コンパイラ, QT や GTK などの GUI
        ライブラリは文字列を特別に扱うことで国際化をサポートしています.
	国際化に対応したプログラムは簡単に作成できます.
	それにより, あなたのアプリケーションを提供者が素早く他の言語に対応することが可能になります.
	詳細に関してはライブラリ固有の国際化文書を参照してください.
      </para>

      <para>一般的な予想に反して, 国際化に対応したコードは簡単に書くことができます.
	通常は文字列をライブラリ特有の関数でくくるだけです.
	また, ワイド/マルチバイト文字をサポートするようにしてください.
      </para>

      <sect3>
	<title>国際化のための団結の呼び掛け</title>

	<para>それぞれの国で個別の国際化/地域化への努力が独立して行われているということを,
          これ以上無視するわけにはいきません.
	  わたしたちは, 何度も性懲りもなく車輪を再発明してきました.
	  国際化の舞台における主要なグループが集まって,
          コアチームのように一つのグループとして活動できることを望んでいます.</para>

	<para>現状では, あなたが国際化に対応したプログラムを書くか移植した場合,
          テストのために各国の FreeBSD メーリングリストに送ってくれることを望んでいます.
	  将来的には, 美しくないハックを加えることなしにすべての言語で動作するような,
          すばらしいアプリケーションを作ることを目指しています.</para>

	<para><email>FreeBSD-I18N@FreeBSD.org</email> というメーリングリストがあります.
          もしあなたが国際化/地域化の開発に携わっているなら,
          あなたの意見や考え, 質問等をお寄せください.</para>
	
	<para>Michael C. Wu 氏は, 国際化の成果を
	  <ulink url="http://www.FreeBSD.org/~keichii/i18n/index.html">http://www.FreeBSD.org/~keichii/i18n/index.html</ulink> で保守管理しています.
          また, BSDCon2000 で Clive Lin 氏,
          Chia-Liang Kao 氏, Michael C. Wu
          氏らによって発表された国際化に関する論文や発表資料
          <ulink url="http://www.FreeBSD.org/~keichii/papers/">http://www.FreeBSD.org/~keichii/papers/</ulink> もご覧ください.</para>
      </sect3>

      <sect3>
	<title>Perl と Python</title>
	<indexterm><primary>Perl</primary></indexterm>
        <indexterm><primary>Python</primary></indexterm>

	<para>Perl と Python
          には国際化とワイド文字を扱うためのライブラリが備わっています.
	  国際化に対応するためにそれらを使うようにしてください.</para>

	<para>古いバージョンの FreeBSD では,
          ワイド文字ロケールがシステムにインストールされているのに
          Perl がインストールされていないと警告するかも知れません.
	  この場合, シェルの環境変数 <envar>LD_PRELOAD</envar>
	  に <filename>/usr/lib/libxpg4.so</filename>
          と設定することで対処できます.</para>

	<para><literal>sh</literal> 系のシェルでは:</para>

	<programlisting><envar>LD_PRELOAD=/usr/lib/libxpg4.so</envar></programlisting>

	<para><literal>C</literal> 系のシェルでは:</para>

	<programlisting><envar>setenv LD_PRELOAD /usr/lib/libxpg4.so</envar></programlisting>
      </sect3>
    </sect2>
  </sect1>

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

    <sect2 id="ru-localize">
      <title>ロシア語 (KOI8-R エンコーディング)</title>
      <indexterm><primary>ロシア語の地域化</primary></indexterm>

      <para><emphasis>原作: &a.ache;.</emphasis></para>

      <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 5.0 以降のバージョンの場合は,
              <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>-W</option> オプションと <option>-L</option>
	  オプションの詳細については, &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
		ロケールは古い XFree86 のリリース (3.3 より前)
		では動作しません.
		<filename>/usr/ports/x11/XFree86</filename>
		は最新版の XFree86 となっていますので,
		port から XFree86 をインストールした場合にはうまく
		動作します.
		これは古いバージョンの FreeBSD を使っていない限り
		起こり得ないことです.</para>
	    </note>
	  </listitem>

	  <listitem>
	    <para><filename>/usr/ports/russian/X.language</filename>
	      ディレクトリに移動し,
	      以下のコマンドを実行してください:</para>

	    <screen>&prompt.root; <userinput>make install</userinput></screen>
      
	    <para>上記の port は最新版の KOI8-R フォントをインストール
	      します.  XFree86 3.3 には既に 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>XFree86 v3.* の場合:</para>

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

	    <para>XFree86 v4.* の場合:</para>

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

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

	    <para>ロシア語/ラテン文字の変更は <literal>CapsLock</literal>
	      で行います.  従来の <literal>CapsLock</literal>
	      の機能は <literal>Shift+CapsLock</literal>
	      で使うことができます(ラテン文字モードの時のみ).
	    </para>

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

	    <para>XFree86 v3.* の場合:</para>

            <programlisting>XkbVariant "winkeys"</programlisting>

	    <para>XFree86 v4.* の場合:</para>

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

	    <note>
	      <para>ロシア語の XKB キーボードは古いバージョンの
		XFree86 ではうまく動かないかも知れません.
		詳しくは<link linkend="russian-note">前述の
		  注釈</link>を参照してください.
		ロシア語の XKB キーボードは,
                地域化されていないアプリケーションでもうまく動かないかも知れません.
		地域化されたアプリケーションは少なくともプログラムの最初の方で
		<literal>XtSetLanguageProc (NULL, NULL, NULL);</literal>
		を呼び出すべきです.
		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></indexterm>

      <para>FreeBSD-Taiwan プロジェクトには, 多くの
	<filename>/usr/ports/chinese/*</filename>
        からのアプリケーションを利用した,
        FreeBSD の国際化/地域化のためのチュートリアル
	<ulink url="http://freebsd.sinica.edu.tw/~ncvs/zh-l10n-tut/index.html">
	  http://freebsd.sinica.edu.tw/~ncvs/zh-l10n-tut/index.html</ulink>
	を提供しています.
	<literal>zh-L10N-tut</literal> の編集は
	Clive Lin <email>Clive@CirX.org</email> が担当しています.
	<hostid	role="fqdn">freebsd.sinica.edu.tw</hostid> から
	以下のコレクションを cvsup することもできます:</para>

      <informaltable frame="none">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>コレクション</entry>
	      <entry>説明</entry>
	    </row>
	  </thead>

	  <tbody>
	    <row>
	      <entry>outta-port tag=.</entry>
	      <entry>中国語のベータ版 Ports Collection</entry>
	    </row>

	    <row>
	      <entry>zh-L10N-tut tag=.</entry>
	      <entry>BIG-5 繁体中国語向けの
                FreeBSD 地域化チュートリアル </entry>
	    </row>

	    <row>
	      <entry>zh-doc tag=.</entry>
	      <entry>BIG-5 繁体中国語 翻訳版 FreeBSD 文書</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>

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

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

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

    <sect2>
      <title>日本語/韓国語への地域化</title>

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

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

      <para>FreeBSD の一部を他の言語に翻訳してくれている人たちがいます.
        これらは <ulink url="../">メインサイト</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:
-->
