开发者

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 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

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜