use*_*882 10 ruby ruby-on-rails internationalization ruby-on-rails-3 ruby-on-rails-3.1
我正在使用Ruby on Rails 3.1,我想知道如何正确处理与部分模板文件相关的国际化.那是, ...
...在我的app/views/users/flag.html.erb文件中我有:
<%= t('.test_key1') %>
<%= render :partial => "/users/flag_form" %>
Run Code Online (Sandbox Code Playgroud)
...在我的app/views/users/_flag_form.html.erb文件中我有:
<%= t('.test_key2') %>
Run Code Online (Sandbox Code Playgroud)
如果在我的config/locales/views/users/en.yml文件中(注意:我正在组织官方RoR指南中所述的文件)我使用
en:
users:
flag:
test_key1: Test 1 text
test_key2: Test 2 text
Run Code Online (Sandbox Code Playgroud)
在Test 1 text被显示在"主"模板(app/views/users/flag.html.erb),但Test 2 text不是用于部分模板(app/views/users/_flag_form.html.erb).怎么可以\我应该解决这个问题,以便正确显示Test 2 text?
Vad*_*rov 18
配置/语言环境/ en.yml
en:
users:
flag:
test_key1: Test 1 text
flag_form:
test_key2: Test 2 text
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/用户/ flag.html.erb
<%= t('.test_key1') %>
<%= render :partial => "/users/flag_form" %>
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/用户/ _flag_form.html.erb
<%= t('.test_key2') %>
Run Code Online (Sandbox Code Playgroud)
注意:
Wah*_*Ali 11
一种方法是使用范围,而不是使用句号"延迟加载".这样的事情应该有效:
I18n.t :test_key2, :scope => 'users.flag'
Run Code Online (Sandbox Code Playgroud)
或使用:
I18n.t "users.flag.test_key2"
Run Code Online (Sandbox Code Playgroud)
最后,您甚至可以将其传递给部分,如同
<%= render :partial => "/users/flag_form", :locals => { :test_key => t('.test_key1') } %>
Run Code Online (Sandbox Code Playgroud)
您还应该查看本网站上的附录部分,因为它可能列出了我遗漏的内容:http: //www.unixgods.org/~tilo/Rails/where_is_Rails_trying_to_lookup_L10N_strings.html
| 归档时间: |
|
| 查看次数: |
6781 次 |
| 最近记录: |