プロジェクト

全般

プロフィール

Bug(バグ) #1759

occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する)

Masato Nagasawa13年以上前に追加. 8年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2010-11-08
期日:
進捗率:

100%

3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

説明

再現バージョン

  • OpenPNE3: OpenPNE3.6beta7-dev

概要

この現象は以下のURIにて確認可能です。

pc_frontend_dev.php/connection/new

opToolkit::retrieveAPIList() にて下記のように第二引数に null を指定している箇所がある。

if ($isWithI18n)
{
  $caption = $i18n->__($caption, null, 'api');
}

opI18N::__() の問題の箇所で foreach() をしているため warning となっている。

foreach ($args as $k => $v)
{
  if ($v instanceof SnsTerm)
  {
    $args[$k] = (string)$v;
  }
}

さらに return 時に array_merge を行っているため、この対応も必要である。

return parent::__($string, array_merge($this->parsed[$string], $args), $catalogue);

修正方針

第二引数が配列でない場合に foreach() を処理しないようにし、
同様に array_merge() も行わないように修正を行う。


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #1761: occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する) Fixed(完了) 2010-11-08
関連している OpenPNE 3 - Bug(バグ) #4168: opI18N::__() のパラメータに語形変化の設定をしたSnsTermインスタンスを渡しても反映されない Fixed(完了) 2017-02-27

関係しているリビジョン

リビジョン 9b2f55d8 (差分)
Masato Nagasawa13年以上前に追加

fixed non-array (fixes #1759)

履歴

#1 Masato Nagasawa13年以上前に更新

  • 題名i18nの翻訳メソッド__の第二引数ni から i18nの翻訳メソッド__の第二引数に配列以外を渡した場合にエラーになる に変更
  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Masato Nagasawa にセット
  • 対象バージョンOpenPNE 3.7.0 にセット
  • 3.6 で発生するかYes にセット

#2 Masato Nagasawa13年以上前に更新

  • 題名i18nの翻訳メソッド__の第二引数に配列以外を渡した場合にエラーになる から i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する に変更

#3 Masato Nagasawa13年以上前に更新

  • 題名i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する から occurs "waning" when second arguments of the __ i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する) に変更

#4 Masato Nagasawa13年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 9b2f55d84ecb1e0cc2aa47a77b9b42f0582799f5 で適用されました。

#5 Kousuke Ebihara12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

正直これは opI18N::__() ではなくコール側での問題だと思うので、単純にそこを修正すればよい問題のように思います(あと Type Hinting 指定するとか)。

……が、まあ、配列以外の値に対する考慮がされているのはいいことだと思うのでこれはこれでレビュー OK とします。

ちなみに、このレビューの過程で、このメソッドにおいてパフォーマンスに関わるミスが存在していることが確認できたのでチケットを作成しました。

OpenPNE 3 - Bug(バグ) #2256: Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache (翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている) - OpenPNE Issue Tracking System
http://redmine.openpne.jp/issues/2256

#6 Minoru Takai12年以上前に更新

  • 題名occurs "waning" when second arguments of the __ i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する) から occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する) に変更

チケットタイトルの文字列を一部修正しました。

#7 Yuma Sakata12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

#8 kaoru n8年以上前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

#9 Youichi Kimura約7年前に更新

  • 関連している Bug(バグ) #4168: opI18N::__() のパラメータに語形変化の設定をしたSnsTermインスタンスを渡しても反映されない を追加

他の形式にエクスポート: Atom PDF