CRUDifyを日本語化してみる

CRUDifyを日本語化してみます。Liftには標準で国際化のための仕組みが提供されています。
CRUDifyが使うメッセージリソースはi18n.lift-coreというリソースバンドルで定義されています(lift-webkit-xxxx.jarの中に入っています)。残念ながら最新のLift 2.3でも日本語用のプロパティファイルは含まれていないようなので、src/main/resources配下にi18nパッケージを作成し、lift-core_ja.propertiesを作成します。
とりあえずCRUDifyで使っていそうなメッセージだけ翻訳してみました(他にもあるかも…)。プロパティファイルはnative2asciiしておく必要があります。

View=参照
Edit=編集
Delete=削除
Create=作成
Save=保存
crudify.menu.view.displayName=%sの参照
crudify.menu.edit.displayName=%sの編集
crudify.menu.delete.displayName=%sの削除

ただ、CRUDifyはメッセージの外部化がいまいちいけてないところがあって、以下のようなコードがあったりします。

def createMenuName = S.??("Create")+" "+displayName

S.??("Create") の部分だけ翻訳してもダメなので、こういう部分はMetaMapperでcreateMenuName自体をオーバーライドします。ついでにdisplayNameをオーバーライドしてモデルの表示名も日本語にしてみます。

object Message extends Message 
  with LongKeyedMetaMapper[Message] with CRUDify[Long, Message]{
  
  override def displayName = "メッセージ"
  
  override def showAllMenuName = "メッセージの一覧"
  override def createMenuName = "メッセージの作成"
  override def editMenuName = "メッセージの編集"
}

これでCRUDifyによるCRUDアプリが一通り日本語になりました。