Olly
Olly

Reputation: 7758

Supporting different locale regions using Rails i18n

I'm using the standard Rails I18n API to localise some of our views. This is working really well, but we now have a few use cases for regional changes to the en locale.

The API guide mentions that this isn't supported directly, and other plugins should be used. However, I'm wondering whether there's a simpler way to do this.

I already have en.yml, so in theory I could just create en-AU.yml and en-US.yml which are effectively clones of en.yml but with a few regional changes applied. I could then add additional English - American and English - Australian options to our configuration which would map to the new region-specific locales and allow users to use a region-specific locale.

The only problem I can think of with this is that it isn't DRY -- I would have duplicate translations for all common English words. I can't see a way around this.

Are there any other disadvantages to this approach, or should I just bite the bullet and dive into one of the plug-ins such as Globalize2 instead?

Upvotes: 2

Views: 2901

Answers (3)

PrototypeAlex
PrototypeAlex

Reputation: 223

The rails-i18n-translation-inheritance-helper is getting a bit old now, so here's my approach for a Rails 3.2 project.

If you keep both en-US and en-AU in the same en.yml file you can use the yml repeated node to have a super en section:

For example:

    en: &en
      errors:
        messages:
          expired: "has expired, please request a new one"
          not_found: "not found"

    en-US:
      <<: *en

    en-AU:
      <<: *en
      errors:
        messages:
          not_found: "tis not found"

Upvotes: 6

acw
acw

Reputation: 1093

In newer versions of Rails/i18n, they've added a fallback feature. Works similar to the outdated translation inheritance helper gem

see this answer for more info: Fall back to default language if translation missing

Upvotes: 2

Alex Korban
Alex Korban

Reputation: 15136

I'm using translation inheritance helper plugin for this.

Upvotes: 2

Related Questions