ホーム DoRuby Ruby 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の解説でした〜。

でわまた。

記事を共有

最近人気な記事