[Grails] enum などを select でリスト表示した時に国際化対応する

enum や、DB に、コードの名称などを直接日本語で入れずに、i18n/messages.properties で定義したキーを入れておけば国際化対応が楽だ。

しかし、普通にやっても旨く表示できない。

の from で与えるリストのオブジェクトを MessageSourceResolvable をインプリメントしたものにすると上手く表示できる。

こんな感じで定義しておく。

DBから取った場合は、ドメインで MessageSourceResolvable を実装してあげれば出来るとおもう。やったことないけど。




[Grails] (備忘録) Grails でアプリケーションを作成する手順(MySQLを使う場合)

  1. プロジェクトの作成
  2. grails create-app で作成
    作業ディレクトリにて、

    で、 testProject ディレクトリが作成されている。

  3. MySQL JDBC追加
  4. testProject/grails-app/conf/BuildConfig.groovydependencies

    を追加

    こんな感じになる。

  5. jdbc dirver と、ユーザパスワード の設定
  6. testProject/grails-app/conf/DataSource.groovydriverClassName を、com.mysql.jdbc.Driver に変更する

    username と password もDBに設定した内容を入れておく。

  7. DBの設定
  8. testProject/grails-app/conf/DataSource.groovyurl を、環境に応じて、

    のように変更する。 url は環境別に定義されている。
    developmenttestproduction 、それぞれ開発用、テスト用、本番用の環境別に定義できるので3環境に応じて適宜変更する。

やっておいた方がいいかも

  1. 不要なi18nファイルは削除する
  2. 不要な、i18n は削除する。言語の優先度を次第で、作成していない言語で表示されてしまう。

  3. 基本のパッケージ名を決める
  4. testProject/grails-app/conf/Config.groovygrails.project.groupId を、ベースとなるパッケージ名に変更する。

    ちなみに、デフォルトで設定されている appName は、
    application.properties
    app.name
    の値で指定されている。

  5. ドメインの保存時にエラーがある場合は、常に例外にする
  6. testProject/grails-app/conf/Config.groovy に以下を追加する。