2011-08-25 21 views
7

Ho aggiornato alla versione 0.3.0 active_admin per ottenere l'internazionalizzazione di lavoro. Ma ho problemi con questo.activeadmin + internazionalizzazione

ho il mio file pl.yml aggiornato con la sezione activeadmin che assomiglia a questo:

pl: 
    active_admin: 
    blank_slate: 
     content: "Nie ma jeszcze rekordów." 
     link: "Nowy" 
    dashboard: "Dashboard2" 
    view: "Podgląd" 

questo non ha funzionato, così ho provato ad aggiungere questo codice al mio application.rb:

config.before_configuration do 
     I18n.locale = :pl 
     I18n.load_path += Dir[Rails.root.join('config', 'locales', '*', '.{rb,yml}')] 
     I18n.reload! 
    end 

Ora l'internazionalizzazione sembra funzionare in ambiente di sviluppo, ma ho ancora problemi in altri ambienti. Ho un problema con la dashboard: chiave. Normalmente, in breve, quando I18n non trova la chiave, mette la chiave: con la maiuscola, in questo esempio sarebbe "Dashboard". Ma nel mio caso ho qualcosa di simile:

Develoment:
Development

Produzione:
Production

C'è qualcuno che ha avuto lo stesso problema? Sto facendo qualcosa di sbagliato, o si tratta di un bug activeadmin? Qualche soluzione?

risposta

8

Ho avuto lo stesso problema. Avevo bisogno di fare questo per essere in grado di farlo funzionare sia nella produzione e sviluppo:

config.before_configuration do 
    I18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s] 
    I18n.locale = :nl 
    I18n.default_locale = :nl 
    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s] 
    config.i18n.locale = :nl 
    # bypasses rails bug with i18n in production\ 
    I18n.reload! 
    config.i18n.reload! 
end 

config.i18n.locale = :nl 
config.i18n.default_locale = :nl 

Non molto carina, ma probabilmente causato da un bug in Rails.

+0

grazie! ha fatto il lavoro, ma ancora - è solo una soluzione. Aspettando che li aggiustino. ;) –

+0

Questo errore è parzialmente risolto nell'ultima versione. vedere https://github.com/gregbell/active_admin/issues/434 – kuboon

2

Il motivo principale potrebbe essere causato da: Rails ha scelto la locale dal browser di enduser, ma non il file di configurazione. per esempio. un giapponese sta visitando il tuo sito Web con il suo browser utilizzando l'inglese, quindi l'app Rails mostrerà il testo "inglese", ma non quello giapponese che desideri mostrare.

Secondo Rails documento i18n: http://guides.rubyonrails.org/i18n.html, è necessario prima di tutto:

  1. modificare config/application.rb per impostare il default_locale

    config.i18n.default_locale = :cn 
    
  2. modificare la tua app/controllers/application_controller.rb, per aggiungere un before_filter

    before_filter :set_locale 
    # for those user whose browser is not using our default_locale, e.g. a Chinese using English broser, 
    # just like me. :) 
    def set_locale 
        I18n.locale = params[:local] || I18n.default_locale 
    end 
    
  3. in questo caso, si dovrebbe avere "cn" come locale predefinito.

  4. controlla la tua pagina di visualizzazione, aggiungendo questa riga di codice a qualsiasi tua pagina. per esempio.

    # in products/index.html.erb 
    <h1>Products List</h1> 
    default_locale is: <%= I18n.default_locale %> <br/> 
    current_locale is: <%= I18n.locale %> 
    
  5. risultato l'uscita dovrebbe essere simile:

    Products List 
    default_locale is: cn 
    current_locale is: cn   
    

    e la vostra applicazione Rails dovrebbe funzionare come previsto.

4

in applicazione.rb

config.i18n.default_locale = :fr 
I18n.locale = config.i18n.locale = config.i18n.default_locale 
I18n.reload! 
2

Un'alternativa che sembra funzionare è la creazione di un inizializzatore con il seguente:

# config/initializers/i18n_reload.rb 
Rails.configuration.after_initialize do 
    I18n.reload! 
end