在我的Rails 5应用程序中,我使用Liquid让用户生成内容。
根据用户的输入,我使用以下方式初始化模板:
string = "Order {{ order.id }} was created {{ order.date | date: '%A %d/%m-%Y' }}"
template = Liquid::Template.parse(string)
result = template.render({'order' => {'id' => '123', 'date' => order.date}})
这将会打印出类似于:
'Order 123 was created Sunday 14/01-2018'
但是我该如何将Liquid日期本地化构建到我的Rails应用程序中呢?
文件文档中似乎没有支持此功能。然而,Shopify自己似乎已经在他们的Liquid实现中构建了本地化。
我想我需要传递模板语言环境(en
、fr
等)和语言环境文件。我的Rails语言环境文件如下:
en:
datetime: &datetime
month_names:
[~, January, February, March, April, May, June, July, August, September, October, November, December]
day_names:
[Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
abbr_day_names:
[~, Sun, Mon, Thue, Wed, Thu, Fri, Sat]
formats:
default: "%d/%m/%Y"
long: "%A %d/%m-%Y"
我称之为:
l(order.date, :format => :long, :locale => 'en')
我希望在我的Liquid模板中能够使用类似的日期本地化功能。
I18n.localize
?http://www.stackednotion.com/blog/2015/01/03/formatting-dates-and-times-in-rails-with-i18n-localize/ 看起来相关 - 它展示了如何故意传递一个区域设置并使用自定义日期格式(但请注意,我只花了大约5秒钟思考这个问题...) - Taryn Eastl(order.date,:format =>:long,:locale =>'en')
。如果没有其他更好的解决方案,我将把它写成答案。但它并不完美,因为它将我限制在一组预定义的“格式”中。 - JohnSmith1976