Bug(バグ) #2800
完了翻訳ファイルの読み込みが誤った順序でおこなわれてしまい、たとえば、携帯版で「Login」が「ログイン」ではなく「ログイン」と翻訳されてしまう
100%
説明
概要¶
i18n 翻訳用のメッセージファイルは複数ファイルで同じ語に対する翻訳を記述した場合、「モジュール → アプリケーション → 全体」の優先順に読み込まれる仕様であるが、読み込むべき翻訳ファイルリストの順序に誤りがあり、誤った翻訳ファイルが選択されてしまう問題がある。
これにより、たとえば、 mobile_frontend 用の i18n ファイルに半角カタカナのエントリーを追加しているにもかかわらず、全角カタカナが表示されてしまうような現象が発生する(例:「Login」が「ログイン」ではなく「ログイン」と表示される)。
この問題は #2490 (翻訳ファイルの優先順位がキャッシュ時に逆になっている) 対応中に発覚したものである。 (https://redmine.openpne.jp/issues/2490#note-4)
#2490 はキャッシュ前とキャッシュ後の翻訳の優先順位がそれぞれ異なるという問題で、キャッシュ後の翻訳結果(実装上の誤りが存在していた)がキャッシュ前のものと一致するように修正がおこなわれた。しかし、このチケットで扱う予定の問題により、そもそもキャッシュ前の翻訳結果が適切ではなかったことが明らかになり、 #2490 にて対処がおこなわれた。このとき採用された修正方針を以下に引用する。
opApplicationConfiguration::getI18NDirs() により生成される配列要素の順序は以下のようになります(太字は sfApplicationConfiguration::getI18NDirs() の生成した配列要素)。 0. [sf_root_dir]/i18n 1. plugins/op*Plugin/apps/[app_name]/i18n 2. plugins/op*Plugin/apps/[app_name]/modules/[module_name]/i18n 3. apps/[app_name]/modules/[module_name]/i18n 4. apps/[app_name]/i18n 5. plugins/*/modules/[module_name]/i18n 6. plugins/*/i18n しかし、これは期待通りの結果ではありません。上述の結果を、期待通りの順番に並び替えたものが以下です。 (略) ということで、これでよさそうに思いますが、「0. [sf_root_dir]/i18n 」の順番が妥当かどうかは若干怪しいところです(このディレクトリの立ち位置はいまひとつ明確でない気がしています)。 なので、 [sf_root_dir]/i18n に関してだけはとりあえずこの修正前の挙動を維持する形で、以下のような順序にすることもアリだと思います。ちなみに、この順序ならば sfApplicationConfiguration::getI18NDirs() の結果が利用できます。 2. plugins/op*Plugin/apps/[app_name]/modules/[module_name]/i18n 1. plugins/op*Plugin/apps/[app_name]/i18n 3. apps/[app_name]/modules/[module_name]/i18n 4. apps/[app_name]/i18n 5. plugins/*/modules/[module_name]/i18n 6. plugins/*/i18n 0. [sf_root_dir]/i18n
3.4 には #2490 で扱われているキャッシュの問題は存在しないが、翻訳ファイルリストの順序が誤っている問題は存在するため、 https://redmine.openpne.jp/issues/2490#note-4 以降のやりとりを参考にした上で、修正を取り込む必要がある。
詳細¶
確認バージョン¶
OpenPNE 3.4.21-dev (stable-3.4.x)
Kousuke Ebihara さんが12年以上前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Kousuke Ebihara にセット
Kousuke Ebihara さんが12年以上前に更新
- 3.4 ではキャッシュ時と未キャッシュ時に同様の翻訳が使われるので、このチケットの主題である問題は存在しない
- だが、元チケットである #2490 で不完全な修正を施した状態 (7047ccf4 時点) と同様の状態に陥っている。そのため、 http://redmine.openpne.jp/issues/2490#note-4 で指摘している問題は生じるし、ここで示している解決策はとる必要がある
ということで、このチケットでは http://redmine.openpne.jp/issues/2490#note-4 で指摘している問題の解決をおこなうべきだと思います。その場合、チケットの内容は実情に即していないためふさわしくなく、というよりもはやバックポートチケットではなくなるので、そのあたりを諸々変更するべきだと思います。
Kousuke Ebihara さんが12年以上前に更新
- トラッカー を Backport(バックポート) から Bug(バグ) に変更
- 題名 を 翻訳ファイルの優先順位がキャッシュ時に逆になっている から 翻訳ファイルの読み込みが誤った順序でおこなわれてしまい、たとえば、携帯版で「Login」が「ログイン」ではなく「ログイン」と翻訳されてしまう に変更
- 説明 を更新 (差分)
- 3.6 で発生するか を Unknown (未調査) にセット
- 3.4 で発生するか を Unknown (未調査) にセット
Kousuke Ebihara さんが12年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 285e317d514e467ea2ac8bbab2f232eedcc02235 で適用されました。
Yuya Watanabe さんが12年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Yuma Sakata さんが12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。