2008年12月4日木曜日

restful_authenticationの日本語化。

与太話書いてたら、長くなったんで、分けたwww

restful_authenticationをいれたんだから、まず、これをi18nで日本語化しましょうかね?
ああ、いきなり、
$ script/generate i18n ja
なんてやってるけど、そんなgenerator、rails 2.2.2には、入っていません。
んで、当然ながら、
$ script/plugin install git://github.com/amatsuda/i18n_generators.git
などとして、インストールする事に。
今回はplugin版をセレクト。
gem版もあるけどね。


で、N7 - sandbox | Ruby on Rails, iPhone開発 etc.は、凄く参考になったんだけど、ちょっと情報が古くなってたりなんかする。
i18nジェネレータは、今は、ja.ymlとmodel_ja.ymlの2つしか、生成しません。

あと、ここのやり方で、ちょっと腑に落ちないところがあったんで、オイラ的アレンジを。
続きのページ、「Rails 2.2の国際化(i18n)を試す(3) restful_authentication #2では、h1要素を、

ってしてるけど、こりゃあ、オイラ的には、

だね。
んで、model_ja.ymlは、
ja:
(省略)
  header:
    user: 
      new: 新規ユーザー登録

  lable:
    user:
      signup: 登録
ってな具合にする。
h1要素の「新規ユーザー登録 」は、labelじゃなくってheaderだからね:-)

あと、「エラーメッセージの日本語化」のところで、user.rbの:login、:name、:emailをrails標準のエラーメッセージを使うように変更しているけど、これは、なんかオイラ的には、嫌いなんで、
  validates_presence_of     :login
  validates_length_of       :login,    :within => 3..40
  validates_uniqueness_of   :login
  validates_format_of       :login,    :with => Authentication.login_regex, :message => :bad_login_message

  validates_format_of       :name,     :with => Authentication.name_regex,  :message => :bad_name_message, :allow_nil => true
  validates_length_of       :name,     :maximum => 100

 こんな調子に書き換えた。
んで、ja.ymlを、
  activerecord:
    errors:
(略)
      messages:
(略)

        bad_login_message: "は英数字と\".\"、\"-\"、\"_\"、\"@\"のみを使用して下さい。"
        bad_name_message: "には不可視キャラクタと\"\\\"、\">\"、\"<\"、\"/\"を使用しないで下さい。"
        bad_email_message: "を正確に入力して下さい。"
こんな調子に。

あと、app/views/users/new.html.erbの書き方が、非常にマズいwww
for属性をコロしちゃってますやんwww
なんで、こんなふうに書き換えた。
<h1><%= t('header.user.new') %></h1>
<% @user.password = @user.password_confirmation = nil %>

<%= error_messages_for :user %>
<% form_for :user, :url => users_path do |f| -%>
<p><%= label_tag 'login', t('activerecord.attributes.user.login') %><br/>
<%= f.text_field :login %></p>

<p><%= label_tag 'email', t('activerecord.attributes.user.email') %><br/>
<%= f.text_field :email %></p>

<p><%= label_tag 'passoword', t('activerecord.attributes.user.password') %><br/>
<%= f.password_field :password %></p>

<p><%= label_tag 'password_confirmation', t('activerecord.attributes.user.password_confirmation') %><br/>
<%= f.password_field :password_confirmation %></p>

<p><%= submit_tag 'Sign up' %></p>
<% end -%>
これで、http://localhost:3000/hogehoge/users/newを見て、何も記入せずにsubmitボタンを押してみれば、日本語化しているのが確認できるでしょう。

ステキ(ハート)

0 件のコメント: