Tcl/Tk で gettextize

ちと調べてみた。 gettext ライブラリではなく Tcl 8.2 から用意されている msgcat パッケージを使うのが良いらしい。メッセージカタログのフォーマットが独自なのと、メッセージカタログを UTF-8 で書かないとダメぽなのが注意である。

$ cat test.tcl
#!/usr/bin/tclsh
package require msgcat
proc _ {s} {return [::msgcat::mc $s]}
 ::msgcat::mcload "."
puts stdout [_ "Hello World"]
$ nkf ja.msg
 ::msgcat::mcset ja "Hello World" "こんにちわ、世界"
$ LANG=C ./test.tcl
Hello World
$ LANG=ja_JP.eucJP ./test.tcl
こんにちわ、世界

LANG が ja_JP.ShiftJIS にしたりすると、ちゃんとShiftJIS出力されるようである。わりかしちゃんとしてる模様。