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

May 13, 2006 [おもひで]

[Rails] InternationalizationComparision

こんなページができてしまったのでやむなく参戦。いや望むところと言うべきか。

きっとここで(彼らが特に気にしている)メッセージ翻訳については圧勝するはず。

だけど、逆にそれ以外の部分、日付・通貨・数値フォーマットのサポート、select_date(), distance_of_time_in_words()等のヘルパーのサポートが欠けていることにいずれ気づくことになる。

元々、Ruby-GetText-Packageはメッセージ翻訳というのが守備範囲なので(もちろん、Railsに関してはすでにその範疇を飛び越えちゃってるけど)、実はこの辺の実装は後回しになってしまってる。

将来的にはRuby/CLDRを機能アップして、それを使うようにするのがベストだと思うんだけど、暫定的にRuby-GetText-Packageに取り込んじゃうのは手かもしれない。

誰かプラグインかなんかで実装してみません?

[Rails] 1つのViewに複数言語を表示する

という質問が来た。彼は以下のようにやっていた。

foo.rhtml
  <% GetText.locale = "ja" %>
  <%=_("hello world") %>
  <% GetText.locale = "en" %>
  <%=_("hello world") %>

1つめは日本語で、2つめは英語で表示したい。でも、上記は動かない。代わりに以下のようにする必要がある。

foo.rhtml
  <% set_locale "ja" %>
  <%=_("hello world") %>
  <% set_locale "en" %>
  <%=_("hello world") %>

なぜかというと、RailsはGetText::Railsという特別なモジュールをインクルードしているからで、その元となるGetTextモジュールの関数を呼び出してもうまく動作しないから。

ところで、このような使い方するのであれば、set_localeはブロックが使えると良いかもしれない。

foo.rhtml
  <% set_locale("ja") do %>
  <%=_("hello world") %>
  <% end %>
  <%=_("hello world") %>

ベースとしては英語のロケールなんだけど、最初の1文のみ日本語を表示したい、なんていうケース。まぁ、レアケースだなぁ。

[Ruby] Ruby-GetText-Package 中国語(Simplified Chinese)訳

なんだかんだ言っても確実に使ってくれてる人も増えているようです。12言語目は中国語です。なんとなく読めてちょっとうれしいですね。ちなみにLocaleの訳が「国家」になっているようだけど良いのかな。お国柄というところか。それとも日本語と意味が違うのか。

中国語訳

本日のツッコミ(全2件) [ツッコミを入れる]
kou (May 14, 2006 11:22)

#_の第2引数にlocaleを指定できるようにするというのはどうでしょうか.

むとう (May 14, 2006 18:06)

それだと、

・N_.(), n_.(), s_.()他GetTextが提供する他の関数にもlocaleを指定できるようにする必要がある。
・大抵、一ページに複数の_()呼び出しがあることが考えられ、一ページに複数のlocale指定をしなくてはいかないためあまり美しくない(DRYっぽくない)。

の2点であまり嬉しくない気がします。


編集