如何翻译此日期格式

时间:2016-07-21 21:03:25

标签: php function datetime

在模板(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”之后的空格。

1 个答案:

答案 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