2011-08-25 22 views
7

He actualizado active_admin a la versión 0.3.0 para que funcione la internacionalización. Pero tengo problemas con eso.activeadmin + internacionalización

He actualizado mi archivo pl.yml con la sección activeadmin que se parece a esto:

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

Esto no funcionó, por lo que trataron de añadir este código a mi application.rb:

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

Ahora la internacionalización parece funcionar en el entorno de desarrollo, pero todavía tengo problemas en otros entornos. Tengo un problema con el tablero: clave. Normalmente, en resumen, cuando I18n no encuentra la clave, pone la tecla: con mayúscula, en este ejemplo sería "Dashboard". Pero en mi caso tengo algo como esto:

Develoment:
Development

Producción:
Production

¿Hay alguien que tenía el mismo problema? Estoy haciendo algo mal, ¿o es esto un error de activeadmin? ¿Alguna solución?

Respuesta

8

Tuve el mismo problema. Que tenía que hacer esto para ser capaz de conseguir que funcione tanto en la producción y desarrollo:

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 

No es muy bonita, pero probablemente causado por un error en los carriles.

+0

gracias! hizo el trabajo, pero aún así, es solo una solución. Esperando a que arreglen esto. ;) –

+0

Este error está parcialmente corregido en la última versión. ver https://github.com/gregbell/active_admin/issues/434 – kuboon

2

La razón principal puede estar causada por: Rails eligió la configuración regional del navegador del usuario final, pero no su archivo de configuración. p.ej. un japonés visita su sitio web con su navegador usando inglés, luego su aplicación Rails le mostrará el texto "inglés", pero no el japonés que desea que se muestre.

Según el documento i18n Rieles: http://guides.rubyonrails.org/i18n.html, usted tiene que primero de todo:

  1. editar config/application.rb para establecer el default_locale

    config.i18n.default_locale = :cn 
    
  2. editar su app/controllers/application_controller.rb, para agregar 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. en este caso, debe tener el "cn" como configuración regional predeterminada.

  4. revise su página de vista, agregando estas líneas de código a cualquiera de su página. p.ej.

    # in products/index.html.erb 
    <h1>Products List</h1> 
    default_locale is: <%= I18n.default_locale %> <br/> 
    current_locale is: <%= I18n.locale %> 
    
  5. resultado la salida debe ser similar:

    Products List 
    default_locale is: cn 
    current_locale is: cn   
    

    y su aplicación Rails debería funcionar como se espera.

4

en aplicación.rb

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

Una alternativa que parece funcionar es la creación de un inicializador con lo siguiente:

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