rails国际化i18n


routes.rb中添加:

map.filter :locale


initializers中配置:

# encoding: utf-8

I18n.default_locale = :en

require 'i18n/backend/fallbacks'

# We use AR for geographical places.
# We're not chaining it though because the database is queries all the time.
# Would be nice to have a Backend::Chain version that stops at the first find.
# So see app/helpers/reports* and app/views/*geographic*
require 'i18n/backend/active_record'

I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

LANGUAGES = [
['English', 'en'],
['简体中文', 'zh-cn']
]


ApplicationController配置:

before_filter :set_locale_from_url

def set_locale_from_url
params[:locale] = params[:new_locale] || params[:locale]
if params[:locale]
if I18n.available_locales.include?(params[:locale].to_sym)
I18n.locale = params[:locale]
else
flash[:notice] = "#{params[:locale]} " + t('application.flash2_notice')
end
end
end


前端切换:

<%= link_to t('.english'), "#", :onclick => "change_lang('en')", :class=>"#{I18n.locale.to_s=='zh-cn' ? '' : 'underscore'}" %>
<span class="divider"> | </span>
<%= link_to t('.simplified_chinese'), "#", :onclick => "change_lang('zh-cn')", :class=>"#{I18n.locale.to_s=='zh-cn' ? 'underscore' : ''}" %>

var change_lang =function(value) {
var tmp = request_path.split("/"); tmp[1] = value;
location.href=tmp.join("/");
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值