プロジェクト

全般

プロフィール

Bug(バグ) #4668

SNS内名称設定で設定されている項目が翻訳されない場合がある

Rimpei Ogawa11日前に追加. 5日前に更新.

ステータス:
Pending Review(レビュー待ち)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2024-05-02
期日:
進捗率:

50%

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

説明

Overview (現象)

SNS内名称設定で設定されている項目が翻訳されない場合がある。

確認済みなのは以下
  1. opCommunityTopicPlugin をインストールしている場合、OpenPNE 3.10.0 以降のバージョンでは管理画面のトピックコメントリスト、イベントコメントリストで「%nickname%」が翻訳されずに表示される。

Causes (原因)

pc_backend(管理画面)や api(API)では pc_frontend 用のSNS内名称設定を表示する仕様となっており、
SNS内名称設定の項目を取得する SnsTermTable に言語とアプリケーションを指定する configure() メソッドを呼ぶ際には、
現在のアプリケーションが pc_backend や api の場合 "pc_frontend" を引数として渡す実装が opApplicationConfiguration と opI18N に存在する。
ただ、この実装以外の箇所からも SnsTermTable::configure() メソッドが呼ばれる箇所があり、その際に "pc_backend" や "api" が渡されることによりSNS内名称設定が存在しないような判定をされてしまう場合がある。

また、複数回 SnsTermTable::configure() メソッドが呼ばれ言語やアプリケーションが切り替えられた際に、
SnsTermTable 内部で持っているレコードのキャッシュを初期化する処理がないため、一度でも翻訳が実行されキャッシュが保持された後では切り替えが正常に動作しない。

実際には SnsTermTable::configure() が複数回呼ばれても最後に意図した "pc_frontend" を渡した後のみ翻訳が実行されるケースが多く翻訳されない例は少ないが、
opCommunityTopicPlugin の例では、通常翻訳を実行するテンプレートファイル以外の PluginCommunityTopicSearchForm クラスで I18N の機能を利用しているため実行タイミングの違いで問題が発生している。

OpenPNE 3.10 以降でのみ発生するのは以下のチケット、
#4366 SNS内名称設定で設定されている項目が翻訳されない
こちらの修正差分により opI18N::initialize() で、 $this->terms['member'] という箇所を削除したためにこのタイミングで翻訳実行されなくなったことが原因であるが、
SnsTermTable 側の実装で configure() を引数を変えて複数回呼ばれることが考慮されていないこと、あるいは複数回呼び出しを行っていること自体が根本の原因である。

Way to fix (修正内容)

  1. SnsTermTable::configure() で pc_backend, api が指定される可能性をなくす
    • application が pc_backend, api だった場合に pc_frontend に変換する処理を SnsTermTable::configure() 内に追加
    • 同様の処理が書かれていた opApplicationConfiguration と opI18N からは削除
  2. SnsTermTable::configure() で言語アプリケーション切替時は取得済みの terms を空にする

子チケット

Backport(バックポート) #4671: SNS内名称設定で設定されている項目が翻訳されない場合があるPending Review(レビュー待ち)Rimpei Ogawa

Backport(バックポート) #4672: SNS内名称設定で設定されている項目が翻訳されない場合があるPending Review(レビュー待ち)Rimpei Ogawa

履歴

#1 Rimpei Ogawa5日前に更新

  • 説明 を更新 (diff)
  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

https://github.com/openpne/OpenPNE3/pull/709
プルリクエスト作成しました。

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