よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

November 29, 2002

[Ruby-GNOME2] 協力してくれそうな人たち(^^)

きたさんたむらさん。Tutorialの和訳も良いですね。あとはAPIリファレンスとかサンプルプログラムの作成とか、Ruby-GNOME2でまだ未実装のクラス・メソッドの実装とか、そもそもまだ未実装のライブラリ(Ruby/Pango, Ruby/Bonobo, ... )の実装とか、やることてんこ盛りなのでどんなことでも協力していただけるのはありがたいです。

ちなみにRuby-GNOME2メモは確かにたむらさんがおっしゃるようにRDで書いてます。若干ローカルルールを作ってるんですが、RWikiには移行しやすいとは思いますので、The RWikiを間借りさせて頂くのは手ですね。これって、なひさんにお願いすればよろしいのでしょうか。あ、でも、画像とかどうしようかなぁ。

いずれにせよ、この辺の話をするのにWeb日記というのも何ですので、ホントにお手伝いいただけるようでしたら、ひとまず開発者向けMLに入っていただけませんか?そちらで話をしましょう。

こちらからhttp://sourceforge.net/mail/?group_id=53614たどってください。

本日のツッコミ(全2件) [ツッコミを入れる]

 [「おねがい」とかいらないですよ。Wikiだし。]

むとぽん [そうなんですか。じゃ遠慮なく。]


November 29, 2003

[Ruby-GNOME2] rbbr

アイコンビューアでGC絡みのSegmentation Faultが出ることに気づいた。

何が悪いのかRuby-GNOME2周りをいろいろと探してみたのだけどよくわからない。

んで、結局、起動時に読み込むライブラリをクリアしたら(gconf-editorで/apps/rbbr/のlibsという項目をクリア)、Segmentation Faultが出なくなった。

ってことはデフォルト以外で読み込んだライブラリにGC絡みの問題があるんじゃないかなぁ、と思うんだけど、とりあえずRuby-GNOME2が提供しているライブラリには問題ないし、何読み込んでたか覚えてないし、眠いからこれ以上調査するのはやーめよっと。

そういや、rbbrって対象にするライブラリを一度requireで読み込んじゃうんだけど、これが根本的にまずいんだよなぁ。

読み込んだライブラリ自体に思いっきり影響受けるし、Ruby-GNOME(1)みたいなライブラリ読み込んでもたぶんおかしくなるだろうし。

何か上手い方法ないかなぁ。対象とするライブラリをrbbrのプロセスとは別プロセスにするとかかな、やっぱり。それはそれで面倒くさそうだ。


November 29, 2005

[Rails] Modelのローカライズ (2)

ActiveRecordのRuby-GetText化をする上で、偶然なんだけど、最近Rails MLで話題のCustom Validation Messages pluginと同等の機能も実装できちゃったことに気づいた。具体的には以下のような感じ。

#app/models/article.rb
class Article < ActiveRecord::Base
  validates_presence_of :title, :message => _("%{field_name} can't be empty!")
  validates_length_of :description, :minimum => 10, 
   :message => _("%{field_name} is too short (min is %d characters)")
end

_()で囲わなければCustom Validation Messages pluginとほぼ同様。あとは、"[Cheer up!]"という[]で囲う記法をサポートするとCustom Validation Messages pluginと同機能となる。でも、どうしようかなぁ。
今のところ、後方互換性のために、%{field_name}が無い場合は先頭にfield_nameをつけるという仕様にしているんだよね。
まぁ、要望があったら追加する、ってとこかなぁ。

ちと、%{field_name}って長いな。%{fname}にすっかな。それだとfilenameっぽいか。

追記:%{fn}にしてみた。短い方が良いよね。

[Rails] Modelのローカライズ (3)

今回の目玉。実装仕切れてない部分があるんだけどこの部分はかなりのインパクトがあるはずなので誰かが実装する前に紹介しちゃうよん。

たとえば、上記の(2)のArticleクラスの例で言うと、Articleクラスには一切手を加えずにフィールド名がローカライズされる。

その、ローカライズされるフィールド名はpoファイルに記述されてる必要があるんだけどね(ApplicationControllerのinit_gettextで記述したテキストドメイン、この前の例ではblog)

# po/ja/blog.poの内容に以下を追記。
msgid "Article"
msgstr "記事"
  
msgid "Description"
msgstr "内容"

実は上記の部分までは実装済み。次のリリースまでに自動抽出機能をrgettextに持たせる予定で、そこまでやれば、開発者はほとんど意識することなくModel部分のローカライズ文字列をpoファイルにはき出すことができてしまうわけだ。

ね。この機能、圧倒的にローカライゼイションのアドバンテージになるでしょ。

[Rails] Modelのローカライズ (4)

で、ちょっと悩んだのが、(3)の時のmsgidを素のフィールド名にしておいて良いか、という問題。多くの場合は問題ないと思うんだけど、複数のテーブルに同じ"name"というフィールドがあったとして、それを日本語化したい場合はどうだろう。

場合によっては両方とも「名前」で良いかもしれないけど、もしかしたら違うようにしたいのかもしれないよね。

例えば、ArticleテーブルのnameとGroupテーブルのnameがあったとき、前者は「記事名称」後者は「グループ名」という風に和訳したいかもしれない。

もちろん、元々のテーブル設計がこの違いを意識して分けてれば(前者をarticle_name, 後者をgnameにする等)問題ないんだけど、普通はそんなところをユニークにしたりしないよね。

ってことは、やっぱり、ここはsgettextの登場かな。テーブル名を頭にくっつけて以下のような感じにすっか。

# po/ja/blog.poの内容に以下を追記。
msgid "Article|Name"
msgstr "記事名称"
 
msgid "Group|Name"
msgstr "グループ名称"

この例では英語版ではどちらも"Name"と表示されることになる。英語の場合はそれで問題ない(RoRの場合、少なくともそこは表示名となるわけだからそれを意識したフィールド名にするはず)はず。でも、さらに、英語でもこの名称を変更したい場合はCかenロケールのpoファイル作ればいいという代替案も提供できるところがこのアイデアのナイスなところ(自画自賛(^^;))。

あ、そっか。このアイデアだと、テーブル名・フィールド名毎にhuman_attribute_nameをRDBのテーブル名・フィールド名とは別に定義できる、というのが売りになるね。それがたとえC(en)ロケールであってもね。

この辺、今、もりもり実装中なのでアドバイスやグッドアイデアがある人はお早めにご連絡お願いしま〜す。

#といっても、まだ部分的にCVSに反映できてませんが(^^;)。


更新 設定