2014-01-10 50 views
0

我在我的應用程序中使用了BreadcrumbsOnRails。 應用程序已完全本地化,但我在導航翻譯時遇到了一個問題。 當菜單呈現,本地化名稱始終是俄羅斯(甚至I18n.locale =「恩」)rails-breadcrumb和I18n本地化

設立區域在應用控制器

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    before_filter :set_locale 

    add_breadcrumb I18n.t('navigation.home'), :root_path 
    ... 
    def set_locale 
    I18n.locale = params[:locale] || session[:lang] 
    session[:lang] = locale unless session[:lang] == locale 
    I18n.locale = locale 
    end 
    ... 
end 

我旁邊控制器用麪包屑:

class ExamsController < ApplicationController 
    ... 
    add_breadcrumb I18n.t('navigation.exams'), :exams_path 
    before_filter :exam_breadcrumb, :only => [:show, :edit] 
    ... 
end 

#config/lib/breadcrumbs_builder

HAML 視圖麪包屑:

- breadcrumbs = render_breadcrumbs(:separator => '/', :tag => :li, :builder =>  BreadcrumbsBuilder) 
- unless breadcrumbs.blank? 
    .subnav#main-subnav 
    .container 
     %ul.breadcrumbs 
      = breadcrumbs 

有了這個硬編碼一切都OK了:

add_breadcrumb I18n::t('navigation.exams', locale: 'en'), :exams_path 

回答

1

不得不在不同的方法中添加麪包屑。其他解決方案我還沒有找到...

class ExamsController < ApplicationController 

    before_filter :exam_breadcrumb_translate 
    before_filter :exam_breadcrumb, :only => [:show, :edit] 
    ... 

    private 

    def exam_breadcrumb_translate 
    add_breadcrumb I18n::t('navigation.exams'), :exams_path 
    end 

    def exam_breadcrumb 
    @exam = Exam.find(params[:id]) 
    add_breadcrumb @exam.name, exam_questions_path(@exam) 
    end