我在我的语言文件中本地化了降价字符串,我正在寻找一种更简洁的方法来在 HAML 中执行以下操作:
#text_for_something
:markdown
#{ t(:text_in_markown) }
或者,等效地:
#text_for_something!= Maruku.new( t(:text_in_markown) ).to_html
我在我的语言文件中本地化了降价字符串,我正在寻找一种更简洁的方法来在 HAML 中执行以下操作:
#text_for_something
:markdown
#{ t(:text_in_markown) }
或者,等效地:
#text_for_something!= Maruku.new( t(:text_in_markown) ).to_html
我最终为我的 Rails 教程示例应用程序的 i18n 做了类似的事情。不确定这是否重要,但我使用RDiscount来呈现 Markdown。
总之,我将每个 i18n 化的 markdown 文件归档在config/locales下的controller/action目录下,并确定需要在控制器中呈现哪个页面。例如,对于一个简单的 About 页面,这里是markdown 文件所在的位置::en
config/locales/static_pages/about/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
app/views/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}
我知道这不是您想要的,但您可以将以下助手添加到helpers/application_helper.rb
def render_md(key)
Maruku.new( t(key) ).to_html
end
然后像这样在你的 HAML 中使用它:
#text_for_something!= render_md :text_in_markown
希望能帮助到你。