Project

General

Profile

Bug(バグ) #1842

Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache (翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている)

Added by Masato Nagasawa over 8 years ago. Updated over 1 year ago.

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

100%

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

Description

Overview (現象)

Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache.

翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている。

Causes (原因)

opI18N stores cached texts in opI18N::$parsed. A new entry of opI18N::$parsed is added by end of opI18N::__() to skip parsing from the next time. But checking available caches in opI18N::__() is wrong.

opI18N はキャッシュされたテキストを opI18N::$parsed に格納する。 opI18N::$parsed のエントリは次回以降のパースをスキップするために opI18N::__() の末尾で追加される。しかし、 opI18N::__() における有効なキャッシュの確認処理に誤りがある。

public function __($string, $args = array(), $catalogue = 'messages')
{
  if (empty($parsed[$string]))
  {
    $this->parsed[$string] = array();

The above is the main point in this issue. Calling empty() looks like a checking available caches, but this empty() calls to check the undefined local variable $parsed, not $this->parsed. In this code, $parsed is always an empty value. So you get non-cached result from opI18N::__().

これがこのチケットのポイントとなる部分である。 empty() のコール部分は有効なキャッシュの確認をおこなっているように見えるが、 $this->parsed ではなく未定義のローカル変数である $parsed に対して empty() がコールされている。このコードでは $parsed は常に空の値となるため、 opI18N::__() の結果は常にキャッシュされていない値ということになる。

Way to fix (修正内容)

Replace $parsed to $this->parsed.

$parsed を $this->parsed に置き換える。


Related issues

Related to OpenPNE 3 - Backport(バックポート) #2925: Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache (翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている) New(新規) 2010-12-13
Duplicated by OpenPNE 3 - Bug(バグ) #2256: Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache (翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている) Invalid(無効) 2011-07-01

Associated revisions

Revision 63934fd6 (diff)
Added by Masato Nagasawa over 8 years ago

fixed variable (fixes #1842)

History

#1 Updated by Masato Nagasawa over 8 years ago

  • Status changed from New(新規) to Accepted(着手)
  • Assignee set to Masato Nagasawa
  • Target version set to OpenPNE 3.7.0

#2 Updated by Masato Nagasawa over 8 years ago

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

更新履歴 63934fd6bc4b9831f1e57b7e4f6150e7ed66be74 で適用されました。

#3 Updated by Naoya Tozuka almost 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • Assignee deleted (Masato Nagasawa)
  • % Done changed from 50 to 70

修正点( 63934fd6 )確認しました。問題ありません。

#4 Updated by Kousuke Ebihara almost 8 years ago

  • Subject changed from opI18N::__() で結果をキャッシュする処理が機能していない to Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache (翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている)

#5 Updated by isao sano over 7 years ago

テスト完了致しました。
問題ありませんので、ステータスを完了に致します。

#6 Updated by isao sano over 7 years ago

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

#7 Updated by Chiharu Nakajima over 1 year ago

3.6未対応
3.8対応済み

Also available in: Atom PDF