Project

General

Profile

Bug(バグ) #1759

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

Added by Masato Nagasawa over 8 years ago. Updated over 3 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Target version:
Start date:
2010-11-08
Due date:
% Done:

100%

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

Description

再現バージョン

  • 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() も行わないように修正を行う。


Related issues

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

Associated revisions

Revision 9b2f55d8 (diff)
Added by Masato Nagasawa over 8 years ago

fixed non-array (fixes #1759)

History

#1 Updated by Masato Nagasawa over 8 years ago

  • Subject changed from i18nの翻訳メソッド__の第二引数ni to i18nの翻訳メソッド__の第二引数に配列以外を渡した場合にエラーになる
  • Status changed from New(新規) to Accepted(着手)
  • Assignee set to Masato Nagasawa
  • Target version set to OpenPNE 3.7.0
  • 3.6 で発生するか set to Yes

#2 Updated by Masato Nagasawa over 8 years ago

  • Subject changed from i18nの翻訳メソッド__の第二引数に配列以外を渡した場合にエラーになる to i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する

#3 Updated by Masato Nagasawa over 8 years ago

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

#4 Updated by Masato Nagasawa over 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#5 Updated by Kousuke Ebihara almost 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 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 Updated by Minoru Takai almost 8 years ago

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

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

#7 Updated by Yuma Sakata over 7 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テストOKです。

#8 Updated by kaoru n over 3 years ago

  • 3.8 で発生するか set to Unknown (未調査)

#9 Updated by Youichi Kimura over 2 years ago

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

Also available in: Atom PDF