Bug(バグ) #1759
完了occurs "warning" when second argument of the __() i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する)
100%
説明
再現バージョン¶
- 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() も行わないように修正を行う。
Masato Nagasawa さんが約14年前に更新
- 題名 を i18nの翻訳メソッド__の第二引数ni から i18nの翻訳メソッド__の第二引数に配列以外を渡した場合にエラーになる に変更
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Masato Nagasawa にセット
- 対象バージョン を OpenPNE 3.7.0 にセット
- 3.6 で発生するか を Yes にセット
Masato Nagasawa さんが約14年前に更新
- 題名 を i18nの翻訳メソッド__の第二引数に配列以外を渡した場合にエラーになる から i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する に変更
Masato Nagasawa さんが約14年前に更新
- 題名 を i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する から occurs "waning" when second arguments of the __ i18n translation method is non-array (i18nの翻訳メソッド__の第二引数に配列以外を渡した場合に warning が発生する) に変更
Masato Nagasawa さんが約14年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 9b2f55d84ecb1e0cc2aa47a77b9b42f0582799f5 で適用されました。
Kousuke Ebihara さんが13年以上前に更新
- ステータス を 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
Minoru Takai さんが13年以上前に更新
- 題名 を 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 が発生する) に変更
チケットタイトルの文字列を一部修正しました。
Yuma Sakata さんが約13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。
Youichi Kimura さんがほぼ8年前に更新
- 関連している Bug(バグ) #4168: opI18N::__() のパラメータに語形変化の設定をしたSnsTermインスタンスを渡しても反映されない を追加