开发者

Supporting different locale regions using Rails i18n

开发者 https://www.devze.com 2023-01-03 03:44 出处:网络
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.

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 Globa开发者_JAVA百科lize2 instead?


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"


I'm using translation inheritance helper plugin for this.


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

0

精彩评论

暂无评论...
验证码 换一张
取 消