以前のバージョンからの移行
Zend_Locale の API は日々変わっています。
Zend_Locale やそのサブコンポーネントを
初期のバージョンから使っている方は、以下のガイドラインに従ってスクリプトを変更し、
新しい API にあわせましょう。
1.8 から 1.9 以降への移行
非推奨となるメソッド
特別に用意されていたメソッドのいくつかが非推奨となります。
既存の挙動と重複しているからです。
古いメソッドも動作するにはしますが、
新しいメソッドについて説明する user notice が発生することに注意しましょう。
これらのメソッドは 2.0 で削除されます。
次の一覧で、新旧のメソッドコールを参照ください。
新旧のメソッドコールの一覧
古い方法
新しい方法
getLanguageTranslationList($locale)
getTranslationList('language', $locale)
getScriptTranslationList($locale)
getTranslationList('script', $locale)
getCountryTranslationList($locale)
getTranslationList('territory', $locale, 2)
getTerritoryTranslationList($locale)
getTranslationList('territory', $locale, 1)
getLanguageTranslation($value, $locale)
getTranslation($value, 'language', $locale)
getScriptTranslation($value, $locale)
getTranslation($value, 'script', $locale)
getCountryTranslation($value, $locale)
getTranslation($value, 'country', $locale)
getTerritoryTranslation($value, $locale)
getTranslation($value, 'territory', $locale)
1.6 から 1.7 以降への移行
isLocale() を使う際の変更点
コーディング規約に従うと、 isLocale() は boolean
値を返さなければなりませんでした。
以前のバージョンでは、成功したばあいに文字列を返していました。
リリース 1.7 では、互換性モードが追加されて文字列を返す古い挙動も使えます。
しかし、このばあいは新しい挙動に変更するようにというユーザ警告が発生します。
古い挙動の isLocale() が行っていた再ルーティングはもはや不要で、
すべての I18N は自分自身で再ルーティングを行います。
あなたのスクリプトを新しい API 用に変更するには、次のようにメソッドを使用します。
isLocale() を 1.6 用から 1.7 用に変更する方法
2 番目のパラメータを使えば、
そのロケールが正しくて再ルーティングが発生しなかったかどうかがわかることに注意しましょう。
getDefault() を使用する際の変更
getDefault() メソッドの意味が変わりました。
フレームワークにロケールが統合され、それを setDefault()
で設定できるようになったからです。
このメソッドはもはやロケールチェインを返すことはなく、
フレームワークのロケールに設定されたものだけを返します。
あなたのスクリプトを新しい API 用に変更するには、次のようにメソッドを使用します。
getDefault() を 1.6 用から 1.7 用に変更する方法
getDefault(Zend_Locale::BROWSER);
// 1.7 の例
// 互換性モードを変更して警告の発生を防ぐ必要があります
// これは起動ファイルで行うことができます
Zend_Locale::$compatibilityMode = false;
$locale = Zend_Locale::getOrder(Zend_Locale::BROWSER);
]]>
古い実装における getDefault()
の 2 番目のパラメータはもはや使えないことに注意しましょう。
返り値がそれと同じ値となります。
デフォルトでは古い挙動も有効ですが、ユーザ警告が発生します。
新しい挙動にあわせてコードを変更し終えたら、
互換性モードを false に変更して警告が発生しないようにしなければなりません。