Phoenix 1.1.0 から gettext に対応しました。日本語の.poファイルを用意し、locale を設定することでエラーメッセージを日本語に変更することができるようになりましたので、方法を共有します。
設定方法
GitHubで公開している日本語の.poファイルの説明そのままなので、説明自体は割愛します。
このファイルを適用すると、モデルの changeset/2 で何も設定しなくても、このようにエラーメッセージが日本語で表示されるようになります。
メッセージの置き換え
標準でメッセージが設定されている関数(Ecto.Changesetとか)では、message オプションを指定すると、メッセージを任意の文字列で置き換えることができます。標準の日本語訳だとしっくりこない場合、便利かと思います。
例)
model
|> cast(params, @required_fields, @optional_fields)
|> validate_length(:password, min: 2, max: 4)
|> validate_format(:password, ~r/^[0-9]*$/, [message: "数字以外が設定されてるよ!"])