この記事は業務でSpringBootアプリケーションを国際化した際に、特定ロケールのメッセージプロパティファイルが認識されずハマった記録です。なお、SpringBootの詳細な説明はたくさんあるので省略します。
環境
- SpringBoot 1.5.19
- Java 1.8.0
- CentOS release 6.9 (Final)
前提条件
先方の要望でロケールの識別はURIに含めるケース(問題とは直接関係ないですがハマり街道の伏線なので)
英語 : http://example.jp/en/foo
韓国 : http://example.jp/ko/foo
台湾 : http://example.jp/zh_tw/foo
etc...
なぜ?
結論からいうと、locale -a
で表示されるリストのロケール名をプロパティファイル名にする必要があるということです。前提条件で伏線としたURIの言語コード(小文字)をそのままファイル名に使ったことが問題でした。
誤 messages_zh_tw.properties
正 messages_zh_TW.properties
ローカル開発環境はmacでしたが、そこでは小文字でも問題なくファイルを認識していたんですね。何故macは問題なかったのかはこちらが参考になりました。
最後に
改めて記事にすると単なる凡ミスじゃーんという感じですが、解決にそこそこ時間を割いた問題でした。ニッチだと思いますがいつか誰かの助けになれば幸いです。