欢迎来到cool的博客
7

Music box

Click to Start

点击头像播放音乐
新博客链接

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>

返回列表