プロジェクト

全般

プロフィール

Bug(バグ) #4668

完了

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

Rimpei Ogawa さんが7ヶ月前に追加. 5ヶ月前に更新.

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

100%

予定工数:
(合計: 0:00時間)
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 を空にする

子チケット 2 (0件未完了2件完了)

Backport(バックポート) #4671: SNS内名称設定で設定されている項目が翻訳されない場合があるFixed(完了)Rimpei Ogawa2024-05-02

操作
Backport(バックポート) #4672: SNS内名称設定で設定されている項目が翻訳されない場合があるFixed(完了)Rimpei Ogawa2024-05-02

操作

Rimpei Ogawa さんが7ヶ月前に更新

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

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

kaoru n さんが6ヶ月前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです。

isao sano さんが5ヶ月前に更新

  • ステータスPending Testing(テスト待ち) から Pending Merge(マージ待ち) に変更
  • 進捗率70 から 80 に変更

テスト完了しました。問題ありません。

kaoru n さんが5ヶ月前に更新

  • ステータスPending Merge(マージ待ち) から Fixed(完了) に変更
  • 進捗率80 から 100 に変更

マージしました

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