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("/"); };
rails国际化i18n
猜你喜欢
转载自schooltop.iteye.com/blog/2256213
今日推荐
周排行