i18n
Jacob Carlborg
doob at me.com
Wed May 22 00:03:13 PDT 2013
On 2013-05-21 21:56, Nick Sabalausky wrote:
> Speaking of, what is the current state-of-the-art for i18n? Basically
> just tables of format strings looked up by language and a phrase
> identifier?
Ruby on Rails uses the I18n library and works like this:
In a view you can call the "translate" method:
translate("nested.key")
This will look in the YAML file <locale>.yml:
nested:
key: bar
So the above will print "bar". The locale is set for each request in the
controller based on top domain, path or whatever you want:
I18n.locale = "en"
It also supports interpolation:
translate("nested.key", bar: 3) # the last argument is a hash map
en:
nested:
key: foo=%{bar}
Will print: "foo=3". On top of this Rails builds some convenience:
translate(".price", price: product.price)
When the key starts with a dot it will use the path of the view file,
including partials. You many have a YAML file looking like this:
en:
products:
show:
details:
price: "Price: %{price}"
"products" would be a directory, "show" the view file, "details" a
partial included in "show" and "price" would be the key.
There's also the "localize" method:
localize(product.updated_at, format: "date")
Will match the following YAML file:
en:
time:
formats:
date: "%Y-%m-%d"
That will print just the date from the given time stamp.
I18n supports any kind of backend that has the following interface:
backend["nested"]["key"]
A standard translation file for English:
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
Documentation:
http://guides.rubyonrails.org/i18n.html
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list