Content moderationを有効化すると/admin/contentのViewsの翻訳が消える

Config entityを確認していると時々不思議なことに気づく。

日本語標準プロファイルでインストールして、直後にdrush cexでConfig entityのエキスポートを行い、その後Content Moderationを有効化すると、いくつかのviewsの構成に差分が出る。

画像
導入前
画像
導入後

せっかく、翻訳があたっているのに、翻訳が失われてしまうのだ。

/admin/config/regional/translateで確認すると翻訳そのものは失われていないので、恐らく有効時にConfig entityを書き換えていて、その際に翻訳が反映されていないのだろう。ちなみに、Viewsのインターフェース翻訳だけでなく、/admin/structureのビューの説明「コンテンツのカスタマイズされたリストを管理します。」の翻訳が消えてしまうので、「Manage customized lists of content.」になってしまう。多分、多言語対応、あるいはConfig entityの書き換え時の既存エントリへの対応が不足しているのだろう。Coreの一部なのに、そういう問題が残っているのはちょっと悲しい。

もう少し眺めていると、moderation_stateはデータベース内では、content_moderation_stateテーブルが作成されていて、node_moderation_stateではない。確かに、content moderationの対象はnodeだけでなく、blockにも適用できるし、恐らく適切なコードを書けば任意のContent entityに適用できるような設計になっているのだろう。当然Viewsへの影響は甚大となる。何らかの置き換えが行われているのではないかと想像している。もうちょっと調べてみないとBug reportは書けないが、この程度の調査でもDrupal Slackでは問題提起できるかも知れない。

Meetupでも議題にしてみたい気はする。

翻訳が消える原因を追求していると、ユーザーインタフェースの翻訳(locale)と構成の翻訳(config_translation)の機能があることに気がつく。日本語標準プロファイルでは、ユーザーインタフェースの翻訳は有効になるが、構成の翻訳は有効にならない。構成の翻訳が無いので言語はja一つで上書きになる。ViewsはConfig entityなので、この問題が出ている可能性がある。時間を見つけて、多言語環境でも検証してみたい。

今回起きたような問題は、自分のプロジェクトの範囲なら、力技で解決することもできるのだが、本来の姿としては根本の問題を調べてコントリビュートするのが正しいのだと思う。Drupalが優れているのは、コントリビュートのプロセスが丁寧に整備されていて、コードの品質が時間とともに良くなっていくところにあるのだが、規模に応じたコントリビューションが無いと強化スピードが落ちてしまう。コモンズ問題でもある。

タグ
feedback
こちらに記入いただいた内容は執筆者のみに送られます。内容によっては、執筆者からメールにて連絡させていただきます。