Daily Archives: 2012年3月13日

Play 2.0 RC3 における i18n の勘所

Play 2.0 RC3 で i18n を行う場合、他の Web アプリケーションフレームワークに比べてちょっと違うかなと思ったところがあったのでメモ。

まず、自分のアプリケーションの conf/messages でメッセージ定義するのは多分ナシ

なぜかといいますと、Play そのもの(play_2.9.1.jar)が持っている messages のほうが優先されるので、たとえば、

contraint.required=必須

みたいなことをやっても「Required」というもともとのメッセージが表示されてしまいます。

ではどうすれば良いかといいますと、明示的にロケールを指定してやればOK。ただしこれにも癖があります。

リソースバンドルを使い慣れた Java プログラマは、ロケールが ja_JP ならば messages_ja_JP または messages_ja が読み込まれるのではないかと当たりをつけることでしょう。Github 上の Wiki によればファイル名とロケールのセパレータはアンダースコアではなくピリオドなのでロケールを指定するときは messages.ja のように書けばいいことがわかります。

ところがここがハマりポイント! ロケールが ja_JP のとき、このファイルは読み込まれません!なんと、ja と ja_JP は Play では別物なのです!

しかも、Java では ja_JP とロケールを表記するのは当たり前ですが、Play では ja-JP と書き表します。

ということで、メッセージの定義は messages.ja-JP で行うのが無難そうです。

アナリスト、ストラテジストが足りない

我々の業界(ソフトハウス、SIer)には、圧倒的に「アナリスト」や「ストラテジスト」が足りないと思います。

「私はカンナ掛けが最高に上手いです」「寸分の狂いなく木組みします」という腕のいい大工がやってきて「さあ、どんな家を作りましょうか?」といったところで家を建てようと思う人からは仕事を取れるはずもないでしょう。

では最高に上手い設計をする建築士ではどうでしょうか? たぶん、それでもダメです。

お客さんの夢、これからの人生をどうあゆんでいきたいかを汲み取った上で「こんな家はどうでしょう?」と言えるようでなければなりません。

SEには提案力が求められると簡単に言われますが、業務的、経営的分析力と戦略を立てる能力がなければカンナ掛けの上手さのアピールの延長線上から抜け出すことはできないと思います。