rubyベストプラクティスchapter7.5

アプリケーションのローカライズ

Sinatra!簡単にwebアプリが出来る!すげーーーー。

本では実際のローカライズのところはGibberish::simpleを使うってことを言っていますが、著者のgithubリポジトリからライブラリをもってこないとなりません。
https://github.com/sandal/gibberish-simple.gitl:tilte
このChapterではジャンケンをするwebアプリを作ります。
流れとしてはrailsi18nと同じイメージですな。翻訳用のファイルは別ファイルで管理して、アプリケーション上の翻訳したい箇所をTメソッドでくくって翻訳された文字を表示させる。gettextでのpoファイルを使用するにしても、今のrailsのようにyamlを使用するにしても考え方は同じ。

次に言語によって語順を変更する必要がある場合の対処。例えば名前日本語は「姓-名」の順が普通だけど、英語圏だと逆ですよね。筆者のGregory Brownさんは姓がBrownで、名がGregoryです。
こういった場合は翻訳ファイルを

name: "{surname}{given_name}"

こうやって、プログラムは

# デフォルト
data = { given_name: "Gregory", surname: "Brown" }
p T("{given_name} {surname}", [:name, data])  # => Gregory Brown

# 日本語の場合
data = { given_name: "こころ", surname: "高見" }
Gibberish::Simple.use_language(:ja) do
  p T("{given_name}{surname}", [:name, data])  # => 高見こころ
end

とすればよいと。こうやっておくと姓と名の間にスペースを入れるとかの制御も出来ちゃう。本だとgiven_nameを姓、surnameを名のように書いてあるけど辞書で調べると逆のようです。


Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック