Pergunta

Eu tenho esse problema i18n

activerecord:
  notices:
    messages:
      success: 
        create: "Something was created"
    models:
      user:
        success:
            create: "Thanks for registration"

I18n.t("activerecord.notices.models.user.success.create")
# => "Thanks for registration"


I18n.t("activerecord.notices.models.book.success.create") 
# => "translation missing: de, activerecord, notices, models, book, success, create"

Não sei por que o modelo de livro não recebe a massagem por fallback. Eu arrumei config.i18n.fallbacks = true. Estou usando o Rails 3

Foi útil?

Solução

Quando um :predefinição A opção é fornecida, seu valor será retornado se a tradução estiver faltando:

I18n.t :missing, :default => 'Not here'
# => 'Not here'

Mais informações aqui

Outras dicas

Eu defini em config/application.rb geralmente

    config.i18n.fallbacks =[:de, :fr, :en]

Assim, você pode desacelerar a ordem do fallback.

Mas mantenha a atenção em alguns ambientes/*. RB A configuração é substituída.

Você ativou fallbacks para o seu back -end? Supondo que seja simples (baseado no YML no exemplo):

Coloque isso em um inicializador:

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

https://github.com/svenfuchs/i18n/wiki/fallbacks

No Rails 3+, isso é definido nos arquivos de configuração/ambientes:

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation can not be found)
  config.i18n.fallbacks = true

Acredito que a melhor maneira de lidar com uma string ausente é exibir um local padrão, em vez de uma mensagem de erro.

Adicione esta linha no Application.rb ao fallback ao local em inglês.

config.i18n.fallbacks = [:en]

Caso você queira especificar fallbacks específicos de localidade, você pode usar o seguinte:

config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]}

Além disso, observe que você pode ativar e desativar fallbacks com base no seu ambiente. Portanto, enquanto no desenvolvimento pode fazer sentido ter um erro exibido, você pode ativar fallbacks em seu environments/production.rb com o seguinte:

config.i18n.fallbacks = true
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top