何のことか
2024.04.21現在 keycloak v23 や v24 で日本語表示させると、翻訳の適用がおかしいなと思われるところがあります。
例えば、日本語表示化してまず気になるのが管理画面のサイドメニューの項目名にやたら長い文章の項目が表示されたりするところなど。([ユーザ]の下にある、英語表示は「Groups」の項目)
気にしている人を見かけないのでみな日本語表示自体を使っていないのかもしれませんが、自分は日本語表示をしていてこれが気になってしまったのでそれをどうにかすることについて記載しています。
keycloak の翻訳文字列置き換え機能
バージョンによってUIレイアウトは違いますが、レルム設定の[Localization]のなかに[Realm overrides]という機能があり、ここでUI表示テキストを任意の文言に置き換えることができます。
UIで利用されているテキスト項目のリソースIDがわかれば、そのIDに対する表示テキストを自分の好きなように定義できます。
たとえば上述の管理画面サイドメニューにある長い文言の項目は groups
というリソースキーが使われています。
[Realm overrides] 画面で設定対象ロケールに「日本語」を選んでから「Add translation」を押下し、ダイアログで[キー]に groups
を、[値]に表示させたい任意テキストを指定して翻訳オーバライドを追加すれば表示を変えることができます。
どの表示項目がどのようなリソースIDであるかを特定する方法は、わかりません。
自分はkeycloakのリポジトリでリソースファイルらしきものを探し、リソースファイルから文言を検索して探しました。
テキストリソースを置き換えたdockerイメージを作る
置き換えたいものがたくさんある場合、テキストリソースファイル自体を置き換えてしまう手があります。(というか、自分はこちらの方法で置き換えをしていてリソースのIDがわかったため、keycloak の置換機能でできることを後から知りました。)
keycloak のテキストリソースは messages_XX.properties というファイルで定義管理されているようです。(なにかフレームワークのリソース管理ファイルのようですがそれ自体は特に気にしていません。)
keycloak のUIテーマ用の jar 内に含まれる、それらファイルを置き換えてやれば反映されるようです。
Docker 用の bitnami/keycloak イメージをベースとして、そのイメージ内のテキストリソースを置き換えただけのイメージを作る Dockerfile を以下に置いています。
上記は一部の翻訳テキストを当方の好む表記に置き換えているもので、他の方が利用するには適していない可能性が高いですが、任意の翻訳テキストに差し替えた独自のイメージを作る参考となるのではないかと思って紹介しました。