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

December 03, 2007 [長年日記]

[Ruby] Ruby-GetText-Package Tips (1)

最近、質問されたりする中で、その使い方はどうかなぁ、というのが何点かあったので、徒然なく書いてみる。

あまり時間がないのでちょっとずつね。

[rgtp-tips:1] 変数付きの文字列はなるべくmsgidに入れ込む

例えば、

"the file name is /home/mutoh/foo.txt"

みたいな時でファイル名を変数とする場合は、

"the file name is %{filename}" % {:filename => filename}

とする。この場合、

"the file name is %{filename}"

がmsgidになるんだけど、日本語に訳すと

"ファイル名は%{filename}です。"

のように変数の順序も自由に変更できてアプリを変更せずに自然な翻訳をすることができる。

これを、

_("the file name is") + filename

としてしまうと、日本語に訳そうとしたら、

"ファイル名は" + filename

みたいな感じでイマイチだよね。

[rgtp-tips:2] さらに複数の変数を使う場合も同様で、"Your name: Masao, Mutoh"というのを

"Your name: Masao" + firstname + "," + lastname

と言う風に書かずに

_("Your name: %{firstname}, %{lastname}") % {:firstname => firstname, :lastname => lastname}

とする。こうすれば、

"あなたの名前: %{lastname} %{firstname}"

lastname, firstnameが日本語であれば、

"あなたの名前: むとう まさお"

と翻訳できる。実際はこのような順序の変更を翻訳としてしてしまうと不適切な場合もありケースバイケースだとは思うけど、その辺は翻訳者に判断を任せる方が良いでしょう。

ちかれた。以下、つづく(かな?)


December 20, 2007 [長年日記]

[Rails] FormBuilder#labelのローカライズ

ふと、cracchoさんの日記のFormBuilder#labelのローカライズというエントリを見つけた。すばらしい。

モデルの名称を表示に使うというのは頻繁にあることだと思うんだけど、それをGetTextのローカライズ機能を使い、しかしAPIは元のままでラベルに適切な言葉を表示させることができるようにしたというのがとってもクール。

こういったちょっとした工夫をすることで、単なるローカライズの域を越えてRailsが便利になるというのは素晴らしいと思う。

他にもよいアイデアあったらぜひ教えてください。Hikiの方にリンク集を作りますんで。