Ruby言語やLinuxのネタが多いです。
July 17, 2006 [おもひで]
■ [Ruby] Ruby-GetText-Package-1.7.0
出しました。前回はRuby-GetText本体の改修がメインだったのに対し、今回はRuby on Railsのサポートがメインになっています。どうぞお試しくださいませ。
- ActionView::Helpers::DateHelper.distance_of_time_in_words, ActionView::Helpers::ActiveRecordHelper.error_message_onがローカライズされるようになりました。
- ActiveRecord::Base.untranslate, .untranslate_allを追加しました。
- テーブルの"ID"はデフォルトで翻訳対象に含まれなくなりました。
- gettext/rails.rbの内部構成を見直しました。
2つめのuntranslate(_all)ですが、これは以下のようにmodelに対して使います。
class Article < ActiveRecord::Base untranslate :title, :description end class Article < ActiveRecord::Base untranslate_all end
上のパターンでは、title, descriptionフィールドが翻訳対象としてpoファイルに出力されなくなります。下のパターンではArticleテーブルの情報が全てpoファイルに出力されなくなります。翻訳者に訳す必要の無い項目まで提示するのはあまりよろしくないでしょうから、その場合はこまめにこの機能を使うと良いと思います。なお、この見直しの際、"ID"はフツーつかわねーだろ、ということで翻訳対象から外しました。テーブルに関係なく翻訳対象外、としたい場合はGetText::ActiveRecordParser.init(config)の:untranslate_columnsオプションを使います。
■ [Rails] validateのローカライズ
validates_* だけではなく、validateメソッドのerrors.addするメッセージもローカライズできます。ライド・オン・Rails Ruby on Railsを徹底攻略のisbnの例を使うと、こんな感じ。
class Book < ActiveRecord::Base
protected
def validate
errors.add("isbn", _("%{fn} has invalid format: %{isbn}") % {:isbn => isbn}) unless isbn =~ /\A[0-9X]+\z/
end
end
N_()ではなく_()を使っているところに注意してください。n_()も使えます。実はN_()でもいけるんですけど、このタイミングで_()を使うようにすると、上記の例のように%{isbn}として後から情報を埋め込むことができます。
#ここの場合のN_()はクラスメソッドとして使うためのものです。
■ [Rails] Ruby on RailsでRuby-GetText-Packageを使う
久しぶりにアップデートしました。現時点では英語版とほぼ同等になっています。ぜひご一読くださいませ。
