トップ «前の日記(2006-05-01) 最新 次の日記(2006-05-03)» 編集

日々の破片

著作一覧

2006-05-02

_ 日本 Ruby カンファレンス 2006

2006 年 6 月 10 日 (土)、11 日 (日) の二日間です。

_ アップデートポ

task :updatepo do
  GetText.update_pofiles("blog", Dir.glob("{lib,bin}/**/*.{rb,rhtml}"), "blog 1.0.0")
end
 
この場合、ゼロから作り直すんだと開き直って
task :updatepo do
  if RUBY_PLATFORM =~ /mswin32/
    begin
      File.delete('po/blog.pot')
    rescue
    end
  end
  GetText.update_pofiles("blog", Dir.glob("{lib,bin}/**/*.{rb,rhtml}"), "blog 1.0.0")
end
としたほうが幸せだと思う。多分。

追記:それほど幸せじゃないGtk+ Windowsを入れたほうがむしろ良いむとうさんのツッコミも参照

_ Ruby−GetText

テーブル上には出てこないフィールドはどうすればいいんだろう?

たとえば、テーブル上は1つのカラムになるけど、フォームでの入力は都合上、3個に分かれているとか。

たとえば、テーブル上では社員コードという名前のカラムだけど、フォーム上は、採用年度、採用地域コード、連番 というような3つのテキストボックスに入力させて、モデル内でコード化するというような例がある。

class Item < ActiveRecord::Base
 
  validates_numericality_of :hireyear, :allow_nil => false
 
  FIELD_HIRE_DATE = N_('Item|Hireyear')
  def hireyear
    @hire_year
  end
  def hireyear(y)
    @hire_year = y
  end
  ...
end
(追記:_からN_に修正)

まるでS2Daoの定数アノテーションだ。

でも、もっとうまい方法はないかなぁ(parser/activerecord.rbで=メソッドを見つけたらフィールドと見なすというのをちょっと考えたけど副作用が大きすぎるようにも思うし)。

_ Ruby-GetText(続)

結局、ruby-listでのむとうさんのお勧めGlade/Gtk+ for Windowsを入れた。最初、どれか良くわからなくてgtk+-win32-runtime入れたら、さすがにruntime、入ってなかった。で、gtk+-win32-devel入れたら、こっちでOK。ヘッダやライブラリも入ってコンパイルもできるようになったから、ASRにも入れてみようかな?

というのは、前置きで(というか、自分のためのリンク集なのだが)、本題は、CP932で(Windows-31Jはiconv-1.9.1が認識しなかった)ja/foo.po を作っておいたのだが、更新後は、utf-8になってしまってた。potのcontent-typeしか見ないのかな? でも、それは無茶だと思う。jaはCP932、cnはbig5とかって、分かれることがあるはずだから(どうせクライアントへのアウトプットはUTF-8になるのだから、poもUTF-8で作ったほうが良いというのはわかるけど)、potじゃなくて、個々のpo毎に元の文字コードでマージしてくれるべきじゃないかな(ただし、中身が壊れるわけではない。正しくutf-8で出力はされているし、content-typeもutf-8に変わっている)。

本日のツッコミ(全2件) [ツッコミを入れる]
_ むとう (2006-05-03 01:57)

「アップデートポ」のところですが、それをやってしまうとヘッダ部分(ライセンス書いたりする部分)を毎回手書きしなければならないので大変だと思います。msgmergeを使えばその辺は引き継がれますので毎度書き直すのはmsgstrのみで済む、という利点があります。<br>この辺のオススメの手順は以下のURLが参考になるかもしれません(英語ですが・・・)。<br>http://www.yotabanana.com/hiki/ruby-gettext-howto-manage.html<br><br>「テーブル上には出てこないフィールド」の件ですが、これは難しいですね。上記の:hireyearはなかなか良い線行ってると思いますが・・・。<br>ただ、上記のhireyearが活躍する場面と、「テーブル上は1つのカラムになるけど、フォームでの入力は都合上、3個に分かれている」の場面はちょっと状況が違うような気がしました。<br>Viewで3つのフィールド、と言うことであれば、それは単にViewのrhtmlに_()でテキストフィールドを記述しますし、validationはカスタムvalidationを用意することになるのではないでしょうか。であれば、あまり問題にはならないと思うのですが・・・。<br>でも、その辺ってローカライズしない場合でも同様の問題があるんじゃないでしょうか。Ruby-GetTextの守備範囲とはちょっと違うような気がしました。<br>#問題の意図を外してたらすみません。<br>"=メソッドを見つけたらフィールドと見なす"というのはちょっとやりすぎでしょうねぇ。そういった意味でも、抽出文字列を明示するという意味でN_()を使うってのは現実的な気がします。<br><br>CP932がUTF-8になってしまったのは私の方でもちょっと確認してみます。<br>ただ、Ruby-GetText側では特に何もしていないので、もしかしたらGNU msgmergeの仕様かもしれません。

_ arton (2006-05-03 03:29)

確かに、大変でした。>アップデート


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え