[gettext-u-ja] Using user-defined parsers for rgettext
Masao Mutoh
mutoh at highway.ne.jp
Sat Jul 29 00:41:58 EDT 2006
むとうです。
On Sat, 29 Jul 2006 12:32:31 +0900
Masao Mutoh <mutoh at highway.ne.jp> wrote:
> > ユーザが定義したパーサを rgettext で使って pot を生成できると嬉しい、
> > と感じたのですが、いかがでしょうか。
(略)
> いやー、実は私も過去にそう思っていたんですが、実装があと一歩のところ
> で止まってるんですよね(苦笑)。
> ユーザもいないようだったのでモチベーションもあがりませんでしたが、
> 使っていただけるようなら、ということで考えてみます。
最新のCVSで対応してみました。
#ホントにあと一歩でした。なぜソコで放りだしたんだ・・・過去のオレ。
使い方:
まずはパーサモジュールを書きます。
target?, parseという2つのメソッドを実装する必要があります。
最後にパーサをGetText::RGetTextに登録します。
require 'gettext/rgettext'
module TestParser
module_function
# 与えられたファイルがこのパーサで処理すべきかどうか
# を判断します。処理する場合はtrue、そうでなければfalseを返します。
def target?(file)
true
end
# 実際のパース結果を返します。
# fileにはパースするファイル名が入ります。
# aryは過去の解析結果が入ってくるので、これに結果を追加していきます。
# そのmsgidがユニークになるかどうかはこのメソッド内でチェックする必要が
# あります。要は配列に足す前に、aryにすでにそのmsgidがあるかどうかを
# チェックしてください。
# 戻り値は、[["msgid1", "file1:line1", "file2:line2",...],
# ["msgid2", "file3:line3",...]]
# という形式です。
def parse(file, ary)
[["aaa", "foo.rb:200"], ["bbb", "bar.rb:300", "baz.rb:400"]]
end
end
GetText::RGetText.add_parser(TestParser)
上記をtestparser.rbとして保存します。
で、あとはrgettextで上記を使えばOKです。
$ rgettext -rtestparser foo.txt -o foo.pot
Rakeで使う場合はrequire 'testparser'を実行すればあとは他と
変わらずに使えると思います。
たったこれだけの修正ですが、なんだかrgettextは
potファイル生成ツールとしては最強になったかもしれません ;)。
それでは。
P.S.
あ、そうそう、このチェックインでもしかしたらRailsが動かなくなっている
かもしれません。Railsを使っている場合にはまだ試さない方が良いと思います。
--
.:% Masao Mutoh<mutoh at highway.ne.jp>
More information about the gettext-users-ja
mailing list