开发者

Multilingual admin with Globalize2

I have a multilingual admin (for English and Portuguese) that needs to save data for both languages at the same time, like Description EN field and Description PT field in the same form.

Globalize2 makes some magic and I don't know exactly how to save this. I'll post my controller action here, that obviously needs some refactoring. Thanks, people!

def create
  @brand = Brand.create()
  @brand.title = params[:title]
  @brand.upload_logo(params[:logo]) unless params[:logo].blank?
  @brand.order = params[:order]
  @brand.priority = params[:priority]

  plataforms = Plataform.find(:all, :conditions => ["id IN (?)", params[:plataforms]])
  @brand.plataforms = plataforms

  params[:pt].each do |k, v|
    I18n.locale = :pt
    eval "@brand.#{k} = v"
  end

  params[:en].each do |k, v|
    I18n.locale 开发者_JAVA百科= :en
    eval "@brand.#{k} = v"  
  end

  respond_to do |format|
    if @brand.save
    # if 1 == 1
      flash[:notice] = 'Brand was successfully created.'
      format.html { redirect_to(@brand) }
      format.xml  { render :xml => @brand, :status => :created, :location => @brand }
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @brand.errors, :status => :unprocessable_entity }
    end
  end
end

Sorry.. I've forgotten to say.. My doubt is about saving the translations. This code:

params[:pt].each do |k, v|
  I18n.locale = :pt
  eval "@brand.#{k} = v"
end

params[:en].each do |k, v|
  I18n.locale = :en
  eval "@brand.#{k} = v"  
end


Doing globalization using i18n is great and simple.

For instance :

flash[:notice] = t 'Brand was successfully created'

Then create a en.yml in config/locales :

en:
 Brand was successfully created: "Brand was successfully created"

And the portugese version as well following the same convention :

pt: (not sure about the country code)
Brand was successfully created: "bla bla bla I don't speak portugese"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜