操作
Enhancement(機能追加・改善) #6
完了SNS内名称設定機能の追加
開始日:
2009-09-24
期日:
進捗率:
100%
予定工数:
説明
■概要¶
OpenPNE2にあるSNS内名称設定機能をOpenPNE3に追加する。
■仕様¶
対応する文言¶
OpenPNE3 としては少なくとも以下のような文言を変更できるようにする。
OpenPNE2 と同様、アプリケーション毎に設定を分けるようにする。
- フレンド名称
- フレンド(PC)
- マイフレンド(PC)
- フレンド(携帯)
- マイフレンド(携帯)
- コミュニティ名称
- コミュニティ(PC)
- コミュニティ(携帯)
- ニックネーム名称
- ニックネーム(PC)
- ニックネーム(携帯)
対応する言語¶
現時点では日本語と英語のみを想定する。
実装内容¶
テンプレートから以下のように設定値を利用できるようにする。
<?php echo __('%community% are created successfully.', array( '%community%' => $op_term['community']->fronting()->pluralize(), )); // result: Communities are created successfully. ?>
これを実現するための実装方法を以下に示す。
- 以下のようなモデルを作成する。(一部簡略化している)
SnsTerm: actAs: I18n: fields: [value] length: 5 columns: name: { type: string } value: { type: string }
- モデルのテーブルクラスに ArrayAccess インターフェースを実装し、配列のエントリとして、指定されたキーと同じ name カラムの値を持つレコードのインスタンスを返す
- モデルのレコードクラスには __toString() メソッドを定義し、国際化された value カラムの値を返すようにする
- モデルのテーブルクラスはテンプレートから $op_term という変数で参照できるようにする
- 設定ファイルで対応する名称の追加がプラグインからおこなえるようにする
- モデルのレコードクラスには、以下のような有用なメソッドを用意する。これらのメソッドはメソッドチェーンできるようにする
- fronting() : 文頭にくる語として適切な形に変換する(英語の場合、最初の文字を大文字にする)
- titleize() : 表題として用いる語として適切な形に変換する(英語の場合、すべての単語の最初の文字を大文字にする)
- pluralize() : 語を複数形にする
- withArticle() : 冠詞を付ける
操作