【问题标题】:rails-breadcrumb and I18nrails-breadcrumb 和 I18n
【发布时间】:2012-06-02 21:08:40
【问题描述】:

我遇到了rails-breadcrumb 的问题,因为我本地化了我的应用程序。

在我的控制器中,我有这个:

class FooController < PrivateController
  add_breadcrumb I18n.t('breadcrumbs.foo.index'), :foo_url  
end

当我的面包屑显示时,本地化字符串总是取自en.yml,无论我在I18n.locale中设置哪种语言

查看代码后,发现add_breadcrumb充当before_filter,经过一番测试,我得出的结论是,即使add_breadcrumb的内容具有正确的语言环境,似乎传递的值没有。

如果我试试这个:

add_breadcrumb I18n.t('breadcrumbs.foo.index', :locale => "fr"), :foo_url  

一切顺利。

我如何强制我的字符串正确本地化?

谢谢你的提前

【问题讨论】:

    标签: ruby-on-rails internationalization breadcrumbs


    【解决方案1】:

    我终于明白了。在我确定我的问题是由于 I18n 对我的语言环境一无所知,因为我要求它翻译某些内容后,我对 rails-breadcrumb 进行了猴子修补以管理本地化本身。

    知道我将 Symbol 作为第一个参数传递,然后我在 rails-breadcrumb 中调用 I18n.translate()

    add_breadcrumb (:'breadcrumbs.foo.index'), :foo_url  
    

    d

    # config/initializers/rails-breadcrumb-fix.rb
    module Rails
      module Breadcrumbs
    
        class ActionController::Base
    
          protected
    
          def add_breadcrumb(name, url = '')
            @breadcrumbs ||= []
            # if given `name` is a Symbol, we localize it
            if name.is_a?(Symbol)
              name = I18n.t(name)
            end
            url = send(url) if url.is_a?(Symbol)
            @breadcrumbs << [name, url]
          end
    
          def self.add_breadcrumb(name, url, options = {})
            before_filter options do |controller|
              controller.send(:add_breadcrumb, name, url)
            end
          end
    
        end
    
        module Helper
    
          def breadcrumbs(separator = "&rsaquo;")
            @breadcrumbs.map do |txt, path|
              link_to_unless (path.blank? || current_page?(path)), h(txt), path
            end.join(" #{separator} ").html_safe
          end
    
        end
    
      end
    end
    
    ActionController::Base.send(:include, Rails::Breadcrumbs)
    ActionView::Base.send(:include, Rails::Breadcrumbs::Helper)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 2011-07-04
      • 2011-06-19
      • 2012-05-12
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多