その他
    ホーム技術発信DoRubyRuby On Rails エラーの英文を日本語に変換するプラグイン Ruby-GetText-Package

    Ruby On Rails エラーの英文を日本語に変換するプラグイン Ruby-GetText-Package

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    ども、3日連続(休日はなしね)投稿中rickです。

    今回は、Validateの英文を日本語にするプラグインの解説です。

    これは、rails2.1以前まで使用可能です。
    gettext2.0.0は、rails2.3.2対応してるらしいですが、バグあるらしいです。

    gettext1.9.3はrails1.2.6に対応してないので、gettext1.90.0を入れるのがいいと思います。

    今回の環境説明

    Ruby 1.8.6
    Rails 1.2.6
    gettext 1.90.0
    MySql 6.0.9-alpha

    install

    $gem install gettext –version=1.90.0

    事前準備

    htmlのヘッダーに

    <meta http-equiv=”content-type” content=”text/html;charset=UTF-8″ />
    database.ymlに

    encoding: utf8

    config/enviroments.rbに

    $KCODE = ‘u’
    require ‘jcode’

    はやっておきましょう。
    日本語表示・入力だよ〜っていう宣言です。

    設定

    config/enviroments.rbに

    require ‘gettext/rails’

    を加えます。
    app/controllers/application.rbに

    class ApplicationController < ActionController::Base
     init_gettext “test”
     省略
    end

    を加えます。
    全ての場所で設定ファイルを読込めるようにしてるだけですね。
    “test”の部分は後から出てくるpoファイルの名前なので何でもいいです。
    次に、app上のRakefileに、

    desc “Update pot/po files.”
    task :updatepo do
    require ‘gettext_rails/tools’
    GetText.update_pofiles(“test”, #テキストドメイン名(init_gettextで使用した名前)
    Dir.glob(“{app,config,components,lib}/**/*.{rb,erb,rjs}”), #ターゲットとなるファイル
    “test 1.0.0” #アプリケーションのバージョン
    )
    end

    desc “Create mo-files”
    task :makemo do
    require ‘gettext_rails/tools’
    GetText.create_mofiles
    end

    を加えます。
    そして

    $rake updatepo
    $make po/ja
    cp po/test.pot po/ja/test.po

    します。
    次にtest.poの編集

    # SOME DESCRIPTIVE TITLE.
    # Copyright (C) YEAR THE PACKAGE’S COPYRIGHT HOLDER
    # This file is distributed under the same license as the PACKAGE package.
    # FIRST AUTHOR , YEAR.
    #
    #, fuzzy
    msgid “”
    msgstr “”
    “Project-Id-Version: test 1.0.0\n”
    “POT-Creation-Date: 2009-04-17 09:27+0900\n”
    “PO-Revision-Date: 2009-04-17 09:27+0900\n”
    “Last-Translator: FULL NAME \n”
    “Language-Team: LANGUAGE \n”
    “MIME-Version: 1.0\n”
    “Content-Type: text/plain; charset=UTF-8\n”
    “Content-Transfer-Encoding: 8bit\n”
    “Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n”

    もともとこんなんが入っていますので、一番下に

    #: app/models/test.rb
    msgit “Test|title”
    msgstr “タイトル”

    というように入力します。
    そして

    $rake makemo

    を実行すると

    local/ja/LC_MESSAGES/test.mo

    というファイルが作成されます。

    実行

    あとは起動してエラーを出すだけです。
    私の場合ここで
    ~/Ruby/Gems/1.8/gems/gettext-1.90.0/lib/gettext/iconv.rb

    if __FILE__ == $0
    puts Iconv.iconv(“EUC-JP”, “UTF-8”, “ほげ”).join
    begin
    puts Iconv.iconv(“EUC-JP”, “EUC-JP”, “ほげ”).join
    rescue Iconv::Failure
    puts $!
    puts $!.class
    end
    end

    とかがsyntax errorを起こしていたんですが、特に必要なさそうだったのでコメントアウトしときました。
    __FILE__は”~/Ruby/Gems/1.8/gems/gettext-1.90.0/lib/gettext/iconv.rb”で、
    $0は、”script/server”なんですがねぇ。。
    なんで通るんでしょうかねぇ。

    最後は、自分じゃよくわらからないですが、
    以上がRuby-GetText-Packageの解説でした〜。

    でわまた。