rails 如何切换语言 使用i18n,中文,英文,zh-CN, en
1.第一步在用户表editor中,添加language字段。
2.登录进去,首页出现选择语言的页面。用户controller名字是editor,首先设置路由:
resources :editors do collection do get :welcome post :language end end
3.设置对应controller的action :
def welcome @editor = current_editor end def language @editor = current_editor @editor.update_attributes(:language => params[:language]) redirect_to root_path end
4.对应的erb 页面 welcome.html.erb: (要在对应的 locales/yml 文件中设置好 i18n才能调用)
<p><%= t('choose_your_language') %>: </p>
<%= form_for @editor, url: language_editors_path, html: {method: 'post'} do |f| %>
<div class="form-group">
<%= select_tag :language, options_for_select([["English", 'en'], ["中文(Chinese)", 'zh-CN' ]] ), class: 'form-control'%>
<div class="actions">
<%= f.submit t('global.submit'), class: 'btn btn-primary' %>
</div>
<% end %>
5.在 application_controller 中添加一个方法 ,为所有的url 设置一个默认的参数 , 如 ?locale = "zh-CN"
def default_url_options Rails.logger.info "=====#{current_editor.language}" { locale: "#{current_editor.language}" } end
6.这样就能自由切换语言了。
7. 设置locales/zh-CN.yml 如下:
category: name: 名称 order: 排序 status: 状态 operation: 操作 article: title: 标题 category: 栏目 status: 状态 order: 排序 created_at: 时间 operation: 操作 new_text_button: 新建图文新闻 new_video_button: 新建视频新闻 new_text: language: 语言 source: 来源 link: 外链 text: 正文 new_video: language: 语言 cover: 视频封面 link: 视频地址 text: 正文
8.在rails中用以下方式就可以调用
<th><%= t('category.name') %></th>
<th><%= t('category.order') %></th>
<th><%= t('category.status') %></th>
<th><%= t('category.operation') %></th>