在我的页面上,我有一个日期变量。我想用locale(在我的例子中是立陶宛语)翻译缩短的月份名称。
我在langed / lang / lt_LT.yml中设置了翻译:
Month:
Jan: 'Sau'
Feb: 'Vas'
Mar: 'Kov'
Apr: 'Bal'
...
当我把
放在我的模板中$Date.Format(M d)
它总是用英语表示月份和日期,无论当地情况如何(例如“4月18日”,在这种情况下我需要“Bal 18”)。
我试图将Month的变量放入.ss template的翻译引号:
<%t Month.$Date.Format('M') %>
但它不起作用。它抛出一个错误:
“[用户错误]未捕获SSTemplateParseException:第16行模板中的解析错误。错误是:格式错误的打开块标记t。也许您曾尝试使用运算符?”
有人可以向我解释我是怎么做错的吗?
答案 0 :(得分:4)
您可以使用$Date.FormatI18N('%b')利用strftime(),而this gist又需要您在服务器上安装的语言环境进行翻译。如果不是,您只需获得英语(或默认)语言环境。
请参阅https://sites.google.com/a/teamdev.com/jxbrowser-support/home了解扩展程序以获取控制器中的当前区域设置。
答案 1 :(得分:1)
我实现此功能的方法是在控制器上添加一个功能:
public function MonthForVar($var) {
return _t("Month.$var");
}
然后您可以在模板中调用$MonthForVar($Date)
。不要忘了,如果你要循环去做$Up.MonthForVar($Date)
**应该补充一点,wmk的答案对于日期格式更好,但是当我尝试翻译与非日期相关的内容时,我是Google的主角。在这种情况下,这应该可行。