在一个模板(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"后面的空格。
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扩展,看看这个答案。