When you need to create a locale for a language variant (like Austrian for German), you probably don't want to duplicate your entire de.yml
file only to change a few minor exceptions for our Austrian friends.
Luckily, the I18n gem used by Rails has a fallback feature Show archive.org snapshot where you can make one locale file fall back to another if no translation is available.
In the example above you would have a config/locales/de_DE.yml
:
de_DE:
# hundreds of translations here
... and another locale config/locales/de_AT.yml
:
de_AT:
# only a handful exceptions here
Now
configure Rails
Show archive.org snapshot
to make de_AT
fall back to de_DE
:
Rails.application.configure do
config.i18n.fallbacks = { de_AT: :de_DE }
end
Check if a key is defined in the current locale (without fallback)
Do this:
I18n.exists?('my.key', fallback: false)
Rails 2
For Rails 2.3.11 you need to upgrade your project to use the I18n gem by adding this to the top of your Gemfile
:
gem 'i18n'
Then run
bundle install
Posted by Henning Koch to makandra dev (2011-07-28 10:51)