首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails / I18n:默认作用域

Rails / I18n:默认作用域
EN

Stack Overflow用户
提问于 2011-05-26 19:47:53
回答 1查看 9.1K关注 0票数 18

我使用Rails的默认I18n模块来转换视图中的字符串。

代码语言:javascript
复制
<%= t("registration.heading") %>

现在,当我在注册视图中时,我所有的字符串都以registration开头。我总是要写

代码语言:javascript
复制
<%= t("registration.heading.notice") %>
// or
<%= t(:heading, :scope => :registration) %>

最好为该文件定义一个默认作用域(甚至可能是在控制器中),这样调用t就会自动添加定义的作用域

代码语言:javascript
复制
// controller
set_i18n_default_scope :registration

// view
<%= t(:heading) %>

// --> looks in "registration.heading"

这个是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-25 03:38:16

如果您想打印出I18n gem的惰性模式正在查找的密钥,可以将其添加到initializers文件夹中的i18n.rb文件中:

代码语言:javascript
复制
module I18n
  module Backend
    class Simple
      module Implementation
        alias_method :lookup_orig, :lookup

        # Give ability to check I18n looked up keys in lazy mode by setting env var I18N_DEBUG to true
        # 
        def lookup(locale, key, scope = [], options = {})
          puts "I18N keys: #{I18n.normalize_keys(locale, key, scope, options[:separator])}" if ENV['I18N_DEBUG']
          lookup_orig(locale, key, scope, options)
        end
      end
    end
  end
end

(要点:https://gist.github.com/capripot/6e6cf778ad2db0443280)

然后像这样启动你的服务器:

代码语言:javascript
复制
I18N_DEBUG=true bundle exec rails server
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6137960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档