Backport(バックポート) #2550
完了翻訳ファイルの優先順位がキャッシュ時に逆になっている
100%
説明
概要¶
i18n 翻訳用のメッセージファイルは複数ファイルで同じ語に対する翻訳を記述した場合、「モジュール → アプリケーション → 全体」の優先順に読み込まれる仕様であるが、翻訳ファイルのキャッシュを生成する過程の処理に誤りがあり、この優先順位が逆になってしまう問題がある。
これにより mobile_frontend 用の i18n ファイルに半角カタカナのエントリーを追加しているにもかかわらず、全角カタカナが表示されてしまうような現象が発生する。
なお、キャッシュファイルがない状態でアクセスした場合にはこの現象は発生しない。
詳細¶
opI18N::generateApplicationMessages() でキャッシュファイルを生成するが、この中で複数の i18n のメッセージファイルの内容をマージする処理で優先度の低いファイルの内容を優先してマージをしてしまっている。
opI18N::generateApplicationMessages() の引数 $dirs には優先度の高い順にディレクトリパスが格納された配列が渡されるが、foreach のループ内では後の値を前の値よりも優先させる形で array_merge() を使っているために本来の優先順位と逆の内容のキャッシュファイルが生成されていた。
修正前のコード:
public function generateApplicationMessages($dirs) { $catalogues = array(); ... foreach ($files as $file) { ... $data = $messageSource->loadData($file); $catalogues[$name] = array_merge($catalogues[$name], $data); }
確認バージョン¶
OpenPNE 3.7.0-dev (master)
OpenPNE 3.6.1 (stable-3.6.x)
Maki Takahashi さんがほぼ13年前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 d2a27414bbff1f2ab2bb3e90fa9967ccb82cd46b で適用されました。
Kousuke Ebihara さんがほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
http://redmine.openpne.jp/issues/2490#note-6 親チケットに従ってステータスを変更します。
Maki Takahashi さんがほぼ13年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
更新履歴 53332913db4a9743da6ce2684c3f3b6252da7d44 で適用されました。
Kousuke Ebihara さんがほぼ13年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Yuma Sakata さんがほぼ13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。