2011-08-25 16 views
7

Zaktualizowałem active_admin do wersji 0.3.0, aby działało internacjonalizacja. Ale mam z tym problemy.activeadmin + internacjonalizacja

Mam plik pl.yml na bieżąco z sekcji activeadmin który wygląda tak:

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

ten nie działa, więc próbowałem dodanie tego kodu do mojego environment.rb:

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

Teraz internacjonalizacja wydaje się działać w środowisku programistycznym, ale nadal mam problemy w innych środowiskach. Mam problem z deską rozdzielczą: klucz. Zwykle, krótko mówiąc, kiedy I18n nie znajdzie klucza, który wkłada klucz: z wielką literą, w tym przykładzie będzie to "Dashboard". Ale w moim przypadku mam coś takiego:

Develoment:
Development

Produkcja:
Production

Czy jest ktoś, kto miał ten sam problem? Robię coś złego, czy jest to błąd activeadmin? Jakieś rozwiązanie?

Odpowiedz

8

Miałem ten sam problem. Musiałem to zrobić, aby być w stanie zmusić go do pracy w produkcji i rozwoju:

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 

niezbyt ładna, ale prawdopodobnie spowodowane błędem w Rails.

+0

dziękuję! wykonał zadanie, ale nadal - to tylko obejście. Czekam, aż to naprawią. ;) –

+0

Ten błąd został częściowo naprawiony w najnowszej wersji. patrz https://github.com/gregbell/active_admin/issues/434 – kuboon

2

Główna przyczyna może być spowodowana przez: Railsy wybrały ustawienia regionalne z przeglądarki użytkownika, ale nie plik konfiguracyjny. na przykład Japończyk odwiedza twoją stronę za pomocą przeglądarki w języku angielskim, wtedy twoja aplikacja Railsowa pokaże mu tekst "angielski", ale nie japoński, który chcesz pokazać.

Według dokumentu Rails i18n: http://guides.rubyonrails.org/i18n.html, trzeba przede wszystkim:

  1. edycji config/environment.rb ustawić DEFAULT_LOCALE

    config.i18n.default_locale = :cn 
    
  2. edytować swoich app/controllers/application_controller.rb, aby dodać 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. w tym przypadku powinieneś mieć "cn" jako domyślne ustawienia regionalne.

  4. sprawdź swoją stronę widoku, dodając ten wiersz kodu do dowolnej strony. na przykład

    # in products/index.html.erb 
    <h1>Products List</h1> 
    default_locale is: <%= I18n.default_locale %> <br/> 
    current_locale is: <%= I18n.locale %> 
    
  5. wynik wyjście powinno wyglądać następująco:

    Products List 
    default_locale is: cn 
    current_locale is: cn   
    

    i aplikacji Rails powinien działać zgodnie z oczekiwaniami.

4

w aplikacji.rb

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

Alternatywą, która wydaje się działać jest stworzenie inicjatora z następujących czynności:

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