プロジェクト

全般

プロフィール

Bug(バグ) #2490

完了

翻訳ファイルの優先順位がキャッシュ時に逆になっている

Maki Takahashi さんが約13年前に追加. 約9年前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2011-10-14
期日:
進捗率:

100%

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

説明

概要

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)


関連するチケット 5 (0件未完了5件完了)

関連している opDiaryPlugin - Bug(バグ) #2284: 携帯版においてDiaryPluginに関連する文言のみの半角カタカナに対応していないFixed(完了)Maki Takahashi2011-07-21

操作
関連している OpenPNE 3 - Backport(バックポート) #2550: 翻訳ファイルの優先順位がキャッシュ時に逆になっているFixed(完了)Maki Takahashi2011-10-14

操作
関連している OpenPNE 3 - Bug(バグ) #1894: The translation is wrong when there are same string to files of the translation (複数の翻訳ファイルに同一の文言が存在した場合、間違った翻訳がされる)Fixed(完了)Masato Nagasawa2011-01-26

操作
関連している OpenPNE 3 - Bug(バグ) #2800: 翻訳ファイルの読み込みが誤った順序でおこなわれてしまい、たとえば、携帯版で「Login」が「ログイン」ではなく「ログイン」と翻訳されてしまうFixed(完了)Kousuke Ebihara2011-10-14

操作
関連している OpenPNE 3 - Backport(バックポート) #3119: 翻訳ファイルの優先順位がキャッシュ時に逆になっているFixed(完了)開 石切山2011-10-14

操作

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