プロジェクト

全般

プロフィール

Bug(バグ) #1842

完了

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

Masato Nagasawa さんが約14年前に追加. 約7年前に更新.

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

100%

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

説明

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 に置き換える。


関連するチケット 2 (1件未完了1件完了)

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

操作
次のチケットが重複 OpenPNE 3 - Bug(バグ) #2256: Text-translation method, opI18N::__(), always parse text in disregard of parsed text cache (翻訳に用いられる opI18N::__() がパース済みテキストのキャッシュを無視して常にテキストのパースをおこなっている)Invalid(無効)2011-07-01

操作

Masato Nagasawa さんが約14年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Masato Nagasawa にセット
  • 対象バージョンOpenPNE 3.7.0 にセット

Masato Nagasawa さんが約14年前に更新

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

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

Naoya Tozuka さんが13年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 担当者 を削除 (Masato Nagasawa)
  • 進捗率50 から 70 に変更

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

Kousuke Ebihara さんが13年以上前に更新

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

isao sano さんが約13年前に更新

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

isao sano さんが約13年前に更新

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

Chiharu Nakajima さんが約7年前に更新

3.6未対応
3.8対応済み

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