在模板(Drupal)php.tpl文件中,我有以下内容:
<?php
print date('F j, Y', $comment->created);
print ' at ' . date('h:ia', $comment->created);
?>
但是当网站使用外语时,它不会打印翻译。我如何翻译?使用t()函数?如果是这样,我该如何重写它以包含它?
感谢任何和所有帮助。 :)
更新:
Isemi下面的第二个解决方案效果很好,除了打印Y而不是年份的年份。通过微调,代码变为:
$dateF = t(date('F', $comment->created));
$datej = t(date('j', $comment->created));
$dateY = t(date('Y', $comment->created));
print "{$datej} {$dateF} {$dateY}" . t(' at ') . date('H:i', $comment->created);
“at”很容易翻译,因为它变成了一个单独的可翻译字符串。注意“a”之前和“t”之后的空格。
答案 0 :(得分:1)
我相信date()
函数会使用服务器的语言环境。您应该在当前流程中更改它,这可能很尴尬,无法在所有配置中运行。
您应该检索所需的区域设置字符串,然后:
setlocale(LC_TIME, 'it_IT'); // Depends on the client.
$datel = strftime("%F %j, %Y at %H:%i:%s", $comment->created);
但除了正确的代码(我对%F和%j不太确定)之外,我认为你仍然存在翻译'at'的问题。
或者,您可以分段获取日期并按部分进行翻译:
$dateF = t(date('F', $comment->created));
$datej = t(date('j', $comment->created));
$dateY = date('Y', $comment->created); // Numeric year not translated.
print "{$dateF} {$datej}, {$dateY} " . t('at')
. date('h:i', $comment->created);
您也可以使用Intl扩展程序,请参阅this answer。