この記事はアピリッツの技術ブログ「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の解説でした〜。
でわまた。