Masao Mutoh
mutoh****@highw*****
2005年 3月 5日 (土) 02:17:27 JST
むとうです。 On Fri, 04 Mar 2005 21:06:03 +0900 Kazuhiko <kazuh****@fdiar*****> wrote: > かずひこです。 > > At Fri, 04 Mar 2005 20:53:06 +0900, > Kazuhiko wrote: > > > > def label_hoge > > > 'デフォルトのラベル' > > > end unless methods.include?('label_hoge') > > > > > > とかやればできますが、いくらなんでもですよね。 > > > > tdiary のプラグインを眺めていたら、以下のように書けることに気づきました。 > > > > def label_hoge > > 'デフォルトのラベル' > > end unless @resource_loaded > > > > これなら許せる範囲じゃないでしょうか? > > ああ、よく考えたら > > @conf.lang (デフォルトは 'ja') のリソースをロード > ↓ > なければ 'en' のリソースをロード > ↓ > それもなければ 'ja' のリソースをロード > ↓ > それはそれとして最後にプラグイン本体をロード > > という仕組みになっているために、上記の手はどっちも無理でした ('fr' リソー > スだけあるとかでない限り) 。 > > すみませんが、やっぱり多言語対応するプラグインのリソースは分けてください。 まぁ、今までのやり方(メソッドのオーバーライド)を 踏襲するとそうなりますね。 いっそ、違うアプローチも考えるのも手かもしれません。 例えば、変数を使う方法とか。 en/foo.rb @label_hoge = "English" fr/foo.rb @label_hoge = "French" foo.rb(本体) @label_hoge ||= "日本語" -- .:% Masao Mutoh<mutoh****@highw*****>