在我的页面上,我有一个日期变量。我想按地区翻译它缩短的月份名称(在我的情况下是立陶宛语)。
我已经在langed/lang/lt_lt.yml:中设置了翻译
Month:
Jan: 'Sau'
Feb: 'Vas'
Mar: 'Kov'
Apr: 'Bal'
...
在我的模板中,当我放入时
$Date.Format(M d)
它总是用英语给出月份和日期,无论地点如何(例如"Apr 18",在这种情况下我需要"Bal 18")。
我试图将Month的变量放入.ss模板的翻译引号中:
<%t Month.$Date.Format('M') %>
但它不起作用。它抛出一个错误:
"[用户错误]未捕获的SSTemplateParseException:第16行模板中的分析错误。错误为:打开块标记t时格式不正确。也许您试图使用运算符?"
有人能向我解释一下我怎么做错了吗?
您可以使用$Date.FormatI18N('%b'),它利用strftime(),而strftime又需要在服务器上安装您的语言环境来翻译它。如果没有,您只需要获得英语(或默认)语言环境。
有关在控制器中获取当前区域设置的扩展,请参阅此要点。
我实现这一点的方式是在控制器上放置一个函数:
public function MonthForVar($var) {
return _t("Month.$var");
}
然后可以在模板中调用CCD_ 1。不要忘记,如果你在循环中进行$Up.MonthForVar($Date)
**需要补充的是,wmk的答案更适合日期格式,然而,当我试图翻译与日期无关的内容时,我是谷歌的负责人,在这种情况下,这应该有效。