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

July 15, 2006 [長年日記]

[Rails] GetTextを使っても error_message_on が日本語化されない。

というわけで、Ruby-GetTextの方を、後に提示して頂いたパッチを参考にローカライズするように修正しました(まだCVSにもあげていませんが)。

ただちょっと悩んだのが戻り値にする情報(エラーメッセージ)。案が3つあったんですよね。

(案1)オリジナルのフォーマットをそのまま踏襲する

デフォルトで"is invalid"が返されることになります。先頭に何か文字を追加する、とか言うのはオプション引数(prepend_text, append_text)で指定するのですが、その文字列はアプリ開発者側が指定する必要があります。

コレが単にローカライズされると「は不正です。」というメッセージが返されることになります。prepend_textにカラム名を指定すれば「○○は不正です。」と返されます。

この例では一見問題ないように感じますが、「カラム名から文章をはじめる」ことに違和感のある言語、を考慮すると問題になります。例えば(存在するかは知りませんが)、「不正です、○○」という記述順序の言語の場合を考慮すると、言語毎に適切にオプション引数(prepend_text, append_text)を設定することになり、これは現実的ではなさそうです。

(案2)Ruby-GetTextで利用しているローカライズ直後のフォーマッタ文字列を返す

「%{fn}は不正です。」という文字が返されるので、そこは開発者が値を正しく入れます。 error_message_on(...) % {:fn => "カラム名" } と記述することになるでしょう。これであれば前述の問題は回避できます。

(案3)全部翻訳しちゃえ!

ちょっと乱暴ですが、「○○は不正です。」とカラム名を入れて返してしまいます。

この変更は、当然英語版にも影響があるため、既存の英語版をローカライズする場合には修正が必要になるかもしれません。

で、結論ですが、以下の理由から案3にしました。

・L10nを考えると、案1はない。

・ほとんどのケースでカラム名を独自に記述する必要はない

・カラム付きで返してもらった方が楽