Backport(バックポート) #3119
翻訳ファイルの優先順位がキャッシュ時に逆になっている
100%
Description
概要¶
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)
Related issues
Associated revisions
History
#1
Updated by 開 石切山 over 10 years ago
- Status changed from New(新規) to Accepted(着手)
#2
Updated by 開 石切山 over 10 years ago
修正を下記プルリクエストに含めました
https://github.com/openpne/OpenPNE3/pull/54
https://github.com/Kai-ishikiriyama/OpenPNE3/commit/db4d4496c6b32478dc246ca11fdc3319e8479cf6
https://github.com/Kai-ishikiriyama/OpenPNE3/commit/b65b6de9af4e66f7c6d19559230f572bd67fde1a
https://github.com/Kai-ishikiriyama/OpenPNE3/commit/0686c34fbfb4039ea56c811a534aafe7ecb7c6e1
#3
Updated by 開 石切山 over 10 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
#4
Updated by Maki Takahashi over 10 years ago
更新履歴 db4d4496c6b32478dc246ca11fdc3319e8479cf6 で適用されました。
#5
Updated by Maki Takahashi over 10 years ago
更新履歴 b65b6de9af4e66f7c6d19559230f572bd67fde1a で適用されました。
#6
Updated by Maki Takahashi over 10 years ago
更新履歴 0686c34fbfb4039ea56c811a534aafe7ecb7c6e1 で適用されました。
#7
Updated by 開 石切山 over 10 years ago
- Status changed from Pending Review(レビュー待ち) to Fixed(完了)
- % Done changed from 50 to 100
#8
Updated by 開 石切山 over 10 years ago
- Status changed from Fixed(完了) to Pending Review(レビュー待ち)
- % Done changed from 100 to 50
#9
Updated by 開 石切山 over 10 years ago
- Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.1
#10
Updated by Yuya Watanabe over 10 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#11
Updated by 開 石切山 over 10 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100