使用Rails I18n默认语言的奇怪翻译行为

时间:2013-05-24 00:07:06

标签: ruby-on-rails ruby localization internationalization

我第一次使用I18n gem。我正在使用两种语言(英语和孟加拉语)创建一个网站。所以我根据I18n api做了一切。现在一切正常,除了一个。我的默认操作(或者您可以说root :to => my_default_options)在翻译方面存在一些问题。我的默认i18n语言是英语。但默认布局中的文本(application.html.erb)默认在此操作中以孟加拉文翻译。我只重复默认布局中的部分。该动作的视图文件中的其他文本正在翻译。另一方面,应用程序默认布局的文本在英语和孟加拉语中翻译得很好。问题仅出现在我的默认操作中。

虽然这是一个复杂的问题,但我上传了app的完整来源。 (警告:应用程序未完成,因此一切都可能无效)

我不确定在这里发布哪些文件是必要的。我在微博控制器中遇到此问题。在“新”行动中。这是......

class MicroblogsController < ApplicationController
  before_filter :auth, :only => [:up, :down] 
  before_filter :set_locale

  def new
    @text = Microblog.new
    @all = all.paginate(:page => params[:page], :per_page => 5)
    @top = Microblog.top_rated.paginate(:page => params[:page], :per_page => 5)
  end

  def create
    @text = Microblog.new(params[:text])
    if Captcha::valid?(session,params)
      if @text.save
        flash[:notice] = "DONE!"
        redirect_to( @text)
      else
        #redirect_to(  :action => 'new' )
        render 'new'
      end
    else
      flash[:notice] = "Wrong Answer. Try Again!"
      redirect_to :back 
    end

  end

  def show
    @text = Microblog.find(params[:id])
    @com = @text.comments.sorted.paginate(:page => params[:page], :per_page => 5)
    @rating = (@text.up - @text.down)
  end


  def up
    @text = Microblog.find(params[:id])
    @text.update_attributes(params[@text.up += 1])
    @text.update_attributes(params[@text.rate += 1])

    @a.push(@text.id)

    session[:token] = @a
    if @a.size > 5
        @a.delete_at(0)
    end

    redirect_to( :action => 'show', :id => @text.id)
  end

  def down


    @text.update_attributes(params[@text.down += 1])
    @text.update_attributes(params[@text.rate -= 1])

    @a.push(@text.id)
    session[:token] = @a
    if @a.size > 5
        @a.delete_at(0)
    end
    redirect_to( :action => 'show', :id => @text.id)
  end


    private

      def auth
            @text = Microblog.find(params[:id])
            @a = session[:token].to_a

            if @a.include?(@text.id)
                redirect_to( :action => 'show', :id => @text.id)
                return false
            else
                return true
            end
      end



end

我在应用程序控制器中设置了i18n选项。

def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
end

来自config.application.rb的i18n配置

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.default_locale = :'en'

以下是view / layouts / application.html.erb中的行。这些是我遇到的问题

<li><%= link_to("#{ t :Home}", :action => 'new') %></li>
    <%= I18n.locale %> (to see the value of i18n)

此问题仅在呈现微博/新操作时发生。文本“:Home”总是转换为bengali并显示i18n变量的值是bn(bengali)。但是/view/microblogs/new.html.erb的其他部分可以完美地翻译

0 个答案:

没有答案