2011-08-25 12 views
7

Tôi đã cập nhật active_admin lên phiên bản 0.3.0 để quốc tế hóa hoạt động. Nhưng tôi có vấn đề với nó.activeadmin + internationalization

Tôi đã tập pl.yml tôi cập nhật với phần activeadmin mà trông như thế này:

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

này không hiệu quả, vì vậy tôi cố gắng thêm mã này vào application.rb tôi:

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

Giờ quốc tế hóa dường như hoạt động trong môi trường phát triển, nhưng tôi vẫn gặp sự cố trong các môi trường khác. Tôi gặp sự cố với trang tổng quan: khóa. Thông thường, trong ngắn hạn, khi I18n không tìm thấy chìa khóa nó đặt chìa khóa: với chữ in hoa, trong ví dụ này nó sẽ là "Bảng điều khiển". Nhưng trong trường hợp của tôi, tôi có một cái gì đó như thế này:

Develoment:
Development

sản xuất:
Production

Có ai có cùng một vấn đề? Tôi đang làm điều gì đó sai, hoặc là một lỗi activeadmin? Bất kì giải pháp nào?

Trả lời

8

Tôi gặp vấn đề tương tự. Tôi cần phải làm điều này để có thể làm cho nó hoạt động trong cả sản xuất và phát triển:

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 

Không phải rất đẹp, nhưng có thể do lỗi trong Rails.

+0

cảm ơn bạn! nó đã làm công việc, nhưng vẫn - nó chỉ là một cách giải quyết. Đang chờ họ sửa lỗi này. ;) –

+0

Lỗi này được khắc phục một phần trên phiên bản mới nhất. xem https://github.com/gregbell/active_admin/issues/434 – kuboon

2

Lý do chính có thể do: Rails chọn ngôn ngữ từ trình duyệt của người dùng cuối, chứ không phải tệp cấu hình của bạn. ví dụ. một người Nhật đang truy cập trang web của bạn bằng trình duyệt của anh ấy bằng tiếng Anh, sau đó ứng dụng Rails của bạn sẽ hiển thị cho anh ấy văn bản "tiếng Anh" chứ không phải bằng tiếng Nhật mà bạn muốn hiển thị.

Theo tài liệu i18n Rails: http://guides.rubyonrails.org/i18n.html, bạn phải trước hết là:

  1. chỉnh sửa config/application.rb để thiết lập default_locale

    config.i18n.default_locale = :cn 
    
  2. chỉnh sửa của bạn app/controllers/application_controller.rb, để thêm 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. trong trường hợp này, bạn nên có "cn" làm ngôn ngữ mặc định.

  4. kiểm tra trang xem của bạn bằng cách thêm các dòng mã này vào bất kỳ trang nào của bạn. ví dụ.

    # in products/index.html.erb 
    <h1>Products List</h1> 
    default_locale is: <%= I18n.default_locale %> <br/> 
    current_locale is: <%= I18n.locale %> 
    
  5. kết quả đầu ra sẽ giống như thế:

    Products List 
    default_locale is: cn 
    current_locale is: cn   
    

    và ứng dụng Rails của bạn nên làm việc như bạn mong đợi.

4

trong ứng dụng.rb

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

Một thay thế mà dường như để làm việc là tạo ra một khởi tạo như sau:

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