我的语言文件中有本地化的markdown字符串,我正在寻找一种更简洁的方法在HAML中执行以下操作:
#text_for_something
:markdown
#{ t(:text_in_markown) }
或等同地:
#text_for_something!= Maruku.new( t(:text_in_markown) ).to_html
答案 0 :(得分:1)
我最终为my Rails Tutorial sample app的i18n做了类似的事情。不确定是否重要,但我使用RDiscount渲染Markdown。
总之,我将每个i18n-ized markdown文件归档到 config / locales 下的控制器/操作目录下,并确定需要在控制器中呈现哪个页面。例如,在简单的“关于”页面的情况下,这里是:en
降价文件所在的位置:
<强>配置/区域设置/ static_pages /约/ about.en.md 强>
About Us
========
Some more markdown text...
要呈现的文件的路径在控制器中确定并分配给@page
,然后文件本身在相关的HAML部分中呈现出来:
应用/控制器/ static_pages_controller.rb 强>
class StaticPagesController < ApplicationController
before_filter :localized_page
def about
# ...
end
# ...
protected
def localized_page
locale = params[:locale]
@page = "#{Rails.root}/config/locales/#{controller_name}/"\
"#{action_name}/#{action_name}.#{locale}.md"
end
end
应用/视图/ static_pages / about.html.haml 强>
= render 'static_page', title: t('.about_us'), page: @page
应用/视图/ static_pages / _static_page.html.haml 强>
- provide(:title, title) if title
:markdown
#{render file: page}
答案 1 :(得分:1)
我知道这不是您的想法,但您可以将以下助手添加到helpers/application_helper.rb
def render_md(key)
Maruku.new( t(key) ).to_html
end
然后只需在你的HAML中使用它:
#text_for_something!= render_md :text_in_markown
希望它有所帮助。