かんたんRoR:5日目
Ruby-GetText によるメッセージなどの日本語化処理。
すでに4日目で作ったアルバムプロジェクトを日本語化してみようということなので、新規に作成するファイルもこれといってないのでサクサクっと終わるかなと思っていたら思わぬ伏兵が。
まずは Ruby-GetText のインストール。Rails も 1.1.6 が入っていることもあって、ここは一番新しいところを入れてみようかということで、注釈にしたがって 1.7.0 を選択( 1.6.0 はサンプルが正しく動作しないというので)。
モデルやビューの日本語化したい部分を _( ) で囲う作業を進める。いくつかについては例示されているものの、他はトライしてみてくださいというので「よしよし大丈夫」などと作業をすすめる(例示されているものはまずはそれにならって修正。コード解説には残る部分もでてはいたのだが後になって気づいた)。
gettext.rake ファイルを用意してさっそく pot ファイルを作成。GNU gettext は入れてないので手作業で po ファイルとしてコピー。mo ファイルも作成してさてとブラウザで表示すると日本語になっている。うーん、便利。
ところが「表示」メニューを選択するとエラーがでてしまう。なにやら memo で NameError がでてしまう。
まずは作業を振り返って入力間違いがなかったかを確認。これといって違いがないようなので、バージョンが違っているためのものかもしれないなということで、ノートの環境に Ruby-GetText 1.5.0 をいれて確認。ところがこちらでも同じようにエラーがでる。
で、よくよく見比べていくとようやく原因とおぼしきものに気づいた。
<p><%= h _(memo) %><br/>
となっているけれど、よく見ると他のファイルの似たような場所はテキストが「 ' 」で囲われている。ひょっとしてこのせい?
というわけで試してみると無事に動作。
CD 収録のサンプルを見ても、また他の同様のファイルを見てもそうなっていてどうやら印刷で落ちてしまったらしい。
とはいえ、考えてみると <%= %> で囲う必要があるという時点で、もはやそのテキストは単純に HTML で表示されるテキストではなくなっているわけで、となれば Ruby できちんと処理されるために「 ' 」か「 " 」で囲う必要があるというのは想像してしかるべきだったかとの反省も。
たとえば、P.051 では rhtml ファイルに関連して <% %> や <%= %> で囲うことの意味や、P.061 では Ruby での文字列の扱いかたについての説明もあるわけで。
そんなわけで却って著者の arton さんにお気を使わせてしまったので申し訳ない気持ちも。
ただ、Ruby 入門者にとっても(Rails はもちろん Ruby もはじめて、という人が対象者であったらちょっと無謀なところもありますが。ただ、Ruby の基本的なところも説明してあるのでそんな人にもお薦めできる一冊であるのは間違いありません)Rails 入門者にとっても、とてもはいりやすい内容と解説である本書だからこそ、そのあたりに補足がしてあると、たとえ印刷が間違っていても気づきやすくてよいかもしれないな、とは思ったので今回翔泳社に連絡した中で希望を伝えたところ、補足をいれる予定とのことでホッとするやら、なんだか申し訳ないやら。
そんなこんなで妙に時間をとられてしまった5日目なのであった(笑)。
#ちなみに Ruby-GetText 1.7.0 だと pot ファイルに "Page|Id" に該当する部分は出てこないので一瞬「?」となったけれど、1.5.0 で試したらあったので、これもまたバージョンによる違いということの様子。もっとも Id は特に必要はないので困ることもなし。
追記:
pot ファイル作成の時に、GNU gettext のない Windows 環境では、既に作成されているファイルやディレクトリを削除するためのコマンドも用意されている。このため初めて作成するときに「指定されたファイルが見つかりません」などと言われるけれど驚かないように。pot ファイルはきちんと作成されているし、二度目以降はそういわれることもないので。(一瞬失敗したのかと思った)
これから Rails 始めるなら絶対おすすめ!
かんたんRuby on RailsでWebアプリケーション開発
| 固定リンク
コメント