我已使用导出操作扩展了RefineryCMS blog / admin / posts控制器,将帖子导出到xml并将其保存到文件中。我需要导出所有翻译版本的帖子。单击导出时,它会保存所有文件,但所有文件都具有相同的区域设置。
我的代码有什么问题:
def generate_xml_by_locales
translated_locales.each do |l|
::I18n.locale = l
file = File.new("blog_#{l}.xml", "wb")
xml = Builder::XmlMarkup.new :target => file
xml.instruct!
xml.blog do
xml.title post.title
xml.description "Sixteenth installment of development diary"
xml.language l.to_s
xml.author "Dan"
xml.date post.created_at
xml.category "diary"
xml.text post.body
end
file.close
end
end
感谢您的帮助。
答案 0 :(得分:0)
我做了一次修改,效果很好。我没有通过I18n.locale更改语言环境,而是使用translations.where(locale:lang).first。不知道它是否是最佳解决方案,但它确实有效。
重构代码:
def generate_xml_by_locales
translated_locales.each do |lang|
generate_xml(translations.where(locale: lang).first, lang)
end
end
def generate_xml post, lang
file = File.new("blog_#{lang}.xml", "wb")
xml = Builder::XmlMarkup.new :target => file
xml.instruct!
xml.blog do
xml.title post.title
xml.description "Sixteenth installment of development diary"
xml.language lang.to_s
xml.author "Dan"
xml.date post.created_at
xml.category "diary"
xml.text post.body
end
file.close
end