# LocalizedToNormalized および NormalizedToLocalized

These two filters can change given localized input to it's normalized representation and reverse. They use in Background `Zend_Locale` to do this transformation for you.

## Zend_Filter_LocalizedToNormalized および Zend_Filter_NormalizedToLocalized でサポートされるオプション

`Zend_Filter_LocalizedToNormalized` および `Zend_Filter_NormalizedToLocalized` では、下記のオプションがサポートされます。

- date_format: 正規化で使う日付形式や、 地域化された日付形式を検出する日付形式を設定します。

- locale: 正規化で使うロケールや、 地域化された形式を検出するロケールを設定します。

- precision: 数値変換で使う精度を設定します。

## ワークフロー

正規化により、ユーザーがユーザー固有の言語表記で情報を入力でき、 さらに例えば正規化された値をデータベースに保存できるようになります。 一方で地域化により、 保管された正規化された値をローカルな流儀でユーザーに提示できるようになります。

正規化および地域化と翻訳とは同一ではないことに注意してください。 これらのフィルタでは、月や日の名前で期待するような、 ある言語から別のものへの文字列の翻訳は行えません。

下記の入力型が正規化および地域化されます。

- integer: 整数値。正規化では英語表記を返します。

- float: フロート値。正規化では英語表記を返します。

- numbers: 実数のようなその他の数値。正規化では英語表記を返します。

- time: 時刻値。連想配列に正規化されます。

- date: 日付値。連想配列に正規化されます。

その他の入力はいずれも変更無しにそのまま返されます。

正規化された出力が常に文字列として与えられることに注意するべきです。 これ以外の場合には、 環境は正規化された出力から、 環境で設定されたロケールで使われる表記法に 自動的に変換します。

## 数値の正規化

整数、フロートまたは実数のようなあらゆる数が正規化されます。 指数表記の数値は、実はこのフィルタで扱えないので注意してください。

数値についての詳しい正規化方法

    //フィルタ初期化
    $filter = new Zend_Filter_LocalizedToNormalized();
    $filter->filter('123.456,78');
    //値 '123456.78' を返します。

アプリケーション全体のロケールとしてロケール 'de' を設定したつもりになりましょう。 `Zend_Filter_LocalizedToNormalized`は設定されたロケールを受け取って、 どの種類の入力をあなたが与えたか検出するために、それを使います。 われわれの例ではそれは精度を持つ値でした。 そこで、この値を文字列として正規化した表現をフィルタは返します。

正規化した数がどのようになるべきか、コントロールすることもできます。 このために`Zend_Locale_Format`でも使用されるオプションを 全て与えられます。利用可能なオプションについて詳しくは、この Zend_Locale の章をご覧ください。

下記はオプションの動作方法が分かるように精度を定義した例です。

    //数値フィルタ
    $filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 2));

    $filter->filter('123.456');
    //値 '123456.00' を返します。

    $filter->filter('123.456,78901');
    //値 '123456.79' を返します。

## 日時の正規化

日付や時刻の値の入力もまた、正規化できます。 与えられた日付および時刻は全て、独自のキーの範囲内で日付の各部分が与えられた 配列として返されます。

    //フィルタ初期化
    $filter = new Zend_Filter_LocalizedToNormalized();
    $filter->filter('12.April.2009');
    // array('day' => '12', 'month' => '04', 'year' => '2009') を返します。

ふたたびロケール 'de' を設定したつもりになりましょう。 そこで、入力は自動的に日付として検出され、 返り値に連想配列を受け取ります。

もちろん、日付の入力値をどのようにするか date_formatやlocaleオプションで コントロールすることもできます。

    //日付フィルタ
    $filter = new Zend_Filter_LocalizedToNormalized(
        array('date_format' => 'ss:mm:HH')
    );

    $filter->filter('11:22:33');
    // array('hour' => '33', 'minute' => '22', 'second' => '11') を返します。

## 数値の地域化

整数、フロートまたは実数のようなあらゆる数が地域化されます。 指数表記の数値は、実はこのフィルタで扱えないので注意してください。

数値についての詳しい地域化方法

    //フィルタを初期化
    $filter = new Zend_Filter_NormalizedToLocalized();
    $filter->filter(123456.78);
    //値 '123.456,78' を返します。

アプリケーション全体のロケールとしてロケール 'de' を設定したつもりになりましょう。 `Zend_Filter_NormalizedToLocalized`は設定されたロケールを受け取って、 どの種類の出力をあなたが受け取りたいのか検出するために、それを使います。 われわれの例ではそれは精度を持つ値でした。 そこで、この値を文字列として地域化した表現をフィルタは返します。

地域化した数がどのようになるべきか、コントロールすることもできます。 このために`Zend_Locale_Format`でも使用されるオプションを 全て与えられます。 これらのオプションの使い方について詳しくは、この Zend_Locale の章 をご覧ください。

下記はオプションの動作方法が分かるように精度を定義した例です。

    //数値フィルタ
    $filter = new Zend_Filter_NormalizedToLocalized(array('precision' => 2));

    $filter->filter(123456);
    //値 '123.456,00' を返します。

    $filter->filter(123456.78901);
    //値 '123.456,79' を返します。

## 日時の地域化

日付や時刻の値を正規化したものもまた、地域化できます。 与えられた日付および時刻は全て、設定されたロケールで定義された形式で 文字列として返されます。

    //フィルタを初期化
    $filter = new Zend_Filter_NormalizedToLocalized();
    $filter->filter(array('day' => '12', 'month' => '04', 'year' => '2009');
    // '12.04.2009' を返します。

ふたたびロケール 'de' を設定したつもりになりましょう。 そこで、入力は自動的に日付として検出され、 ロケール 'de' で定義された形式で返されます。

もちろん、日付の入力値をどのようにするか date_formatやlocaleオプションで コントロールすることもできます。

    //日付フィルタ
    $filter = new Zend_Filter_LocalizedToNormalized(
        array('date_format' => 'ss:mm:HH')
    );

    $filter->filter(array('hour' => '33', 'minute' => '22', 'second' => '11'));
    // '11:22:33' を返します。