<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 15157 -->
<sect1 id="zend.translate.migration">

    <title>以前のバージョンからの移行</title>

    <para>
        <classname>Zend_Translate</classname> の API は日々変わっています。
        <classname>Zend_Translate</classname> やそのサブコンポーネントを
        初期のバージョンから使っている方は、以下のガイドラインに従ってスクリプトを変更し、
        新しい API にあわせましょう。
    </para>

    <sect2 id="zend.translate.migration.fromonesixtooneseven">
        <title>1.6 から 1.7 以降への移行</title>
        <sect3 id="zend.translate.migration.fromonesixtooneseven.languages">
            <title>言語の設定</title>

            <para>
                言語の自動検出を使用したり <classname>Zend_Translate</classname> に手動で言語を設定したりする際に、
                「追加に失敗」や「翻訳がない」などの理由で notice が発行されることがありました。
                以前のリリースでは、場合によっては例外が発生することもありました。
            </para>

            <para>
                その原因は、存在しない言語をユーザが指定した際に
                何が問題なのかを知る簡単な方法がなかったことにあります。
                そこで私たちは notice を発行させるようにしていたのです。
                ログに記録が残るので、サポートしていない言語がリクエストされたことがわかるようになります。
                そしてたとえ notice が発行されたとしても、コード自体は問題なく動作します。
            </para>

            <para>
                しかし、xdebug のような独自のエラーハンドラ/例外ハンドラを使った場合など、
                意図せぬものも含めてすべての notice を拾ってしまうこともあります。
                そういった独自のハンドラは PHP の設定を上書きしてしまうことがあるからです。
            </para>

            <para>
                これらの notice を発生させないようにするためには、新たなオプション
                'disableNotices' を true に設定するだけです。デフォルトは false となっています。
            </para>

            <example id="zend.translate.migration.fromonesixtooneseven.example">
                <title>notice を取得せずに言語の設定を行う</title>

                <para>
                    ここでは、'en' に対応しているところにユーザから
                    'fr' がリクエストされたものと家庭します。この翻訳は登録されていません。
                </para>

                <programlisting role="php"><![CDATA[
$language = new Zend_Translate('gettext',
                               '/path/to/translations',
                               'auto');
]]></programlisting>

                <para>
                    この場合、存在しない言語 'fr' が指定されたことに関する notice が発行されます。
                    オプションを追加すると、この notice は発生しなくなります。
                </para>

                <programlisting role="php"><![CDATA[
$language = new Zend_Translate('gettext',
                               '/path/to/translations',
                               'auto',
                               array('disableNotices' => true));
]]></programlisting>

            </example>

        </sect3>
    </sect2>
</sect1>
