gpt4 book ai didi

ruby-on-rails - 如何在 Liquid 中本地化日期?

转载 作者:行者123 更新时间:2023-12-04 04:33:09 24 4
gpt4 key购买 nike

在我的 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 应用程序中?

the documentation 好像不支持.然而 Shopify themselves seems to have build localization into their Liquid implementation .

我想我需要向我的模板传递语言环境( enfr 等)和语言环境文件。我的 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 模板中访问类似的日期本地化。

最佳答案

我最终使用了@Ben 证明的链接,并编写了此解决方案:

# config/initializers/liquid_filters.rb
module I18nFilters
def l(date, format)
I18n.l(date, :format => format.to_sym)
end
end

Liquid::Template.register_filter(I18nFilters)

现在,在调用该新方法时:
{{ order.date | l: 'long' }}

它会打印出:
'Sunday 14/01-2018'

Sunday无论是在 day_names与语言环境文件。

关于ruby-on-rails - 如何在 Liquid 中本地化日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com