我第一次使用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的其他部分可以完美地翻译