【问题标题】:Translate date("d F Y (H:i) function php翻译日期(“d F Y(H:i)函数php
【发布时间】:2013-01-27 03:16:38
【问题描述】:

我是巴西人,有一个使用

的 wordpress 插件
" . date("d F Y (H:i)",$date) . "

输出:2013 年 1 月 16 日 (00:54)

但它应该是 16 Janeiro 2013 (00:54),在葡萄牙语中......我该如何更改它?

PS:我认为日期可能是由插件创建者提供的外部文件设置的:p 我不确定

【问题讨论】:

  • 在询问时尝试添​​加更多上下文...$date 来自哪里?这是一个主题模板文件吗?您是否在wp-config.php 中使用语言环境pt_BR/wp-admin/options-general.php 中的日期格式是什么?
  • @brasofilo,这是一个主题文件pastebin.com/CZpfBQpF - 刚刚添加了 setlocale(LC_ALL, “pt_BR”, “ptb”);到 wp-config.php 并没有发生任何事情,并且在 options-general.php 中有数百万对 Date 的引用,但据我所知,没有关于本地/语言的引用......这是 wordpress 的默认 options-general.php 3.4.2
  • 这看起来不像是一个主题模板根本...而且它从$_POST 值中获取$date,所以很难分辨出来源。你应该在上面做一个var_dump。 ::: 我的意思是 http://example.com/wp-admin/options-general.php 而不是 PHP 文件本身。 ::: 看来你不知道WPLANG。这个页面非常有用:Editing_wp-config.php。 ::: 您可能也想阅读此问答:How do you debug plugins?

标签: php wordpress date


【解决方案1】:

date 的文档已经回答了这个问题:

要格式化其他语言的日期,您应该使用 setlocale() 和 strftime() 函数而不是 date()。

strftime 表示使用setlocale 的方法是:

根据区域设置格式化时间和/或日期。月和 工作日名称和其他与语言相关的字符串尊重当前 使用 setlocale() 设置语言环境。

也就是说,C 语言环境感知函数没有为have cases 的语言提供足够的功能。在这种情况下(即大多数情况下),您需要自己动手。

【讨论】:

  • 我尝试将<?php setlocale(LC_ALL, “pt_BR”, “ptb”); ?> 添加到 标签内的 header.php 中,但它不起作用,也在插件文件和内容中
  • @user2056484:区域设置名称取决于您服务器的操作系统。无法保证这些特定语言环境是您自己安装的。一般来说,setlocale 不足以完成任何严肃的工作,您可能需要寻找其他解决方案。
  • 嗯,你有什么建议@Jon?我在这里尝试了很多方法:p 这是脚本的 pastebin:pastebin.com/CZpfBQpF -- 另外:我尝试翻译 locale.php,没有成功:/
  • @user2056484:我建议在网上找到一个合适的实现(大多数自尊的 PHP 框架应该有一个)或者自己编写。
  • 乔恩,我是 php 的菜鸟...我并不懒惰,但我的清单上有 30 项来修复并向客户展示网站,我不知道怎么办:p 我想我会跳过这个:/
【解决方案2】:

WordPress 有 date_i18n 根据时间戳以本地化格式检索日期。

试试:

echo date_i18n("d F Y (H:i)", $timestamp);

WordPress 有一个关于如何format date and time 的详细页面。

【讨论】:

  • 耶耶!!它就像一个魅力!很好的解决方案,简单有效!非常感谢!节省了 2 天的工作量!!!!!!
  • 我尝试了所有可能的方法来使用原生 PHP 执行此操作,但由于某种原因它无法正常工作。但使用这个 WordPress 功能,它可以按预期完美运行!
  • 很高兴它对您有所帮助!从事 WP 工作的人做得很棒:)
  • 我有一个从 RSS 获取中显示日期的插件,但没有任何翻译工作。插件使用这种格式:$item->get_date('F j, Y - g:i a');
  • wtf: 01 enero 1970 (00:00)
【解决方案3】:

法语我用这个

setlocale(LC_ALL, 'fra');

echo strftime("%A %d %B %Y",time()); 

葡萄牙语

setlocale(LC_ALL, 'ptg');  //

echo strftime("%A %d %B %Y",time());

Language Strings Country/Region Strings

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2014-03-12
    • 1970-01-01
    相关资源
    最近更新 更多