You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 tx_news列表视图:无法自定义月份名称的技术求助

如何修改TYPO3 tx_news中的自定义月份名称

环境配置

  • TYPO3 12.4.11
  • News 11.4.1
  • PHP 8.2.15

问题描述

需要将新闻日期中的月份名称(如January)改为自定义名称Jannewaris,使日期显示为01 Jannewaris 2024。已尝试以下操作但均无效:

  1. 修改typo3conf/l10n/da/news/Resources/Private/Language/da.locallang.xlf中的month.01翻译节点
  2. 在TS Setup中添加plugin.tx_news._LOCAL_LANG.da.month.01 = Jannewaris
  3. 删除上述语言文件后,前端仍显示丹麦语标准月份名称

当前TS配置plugin.tx_news._LOCAL_LANG.da.dateFormat = %d %B -%Y.可正常修改日期格式,但无法改变月份拼写;模板中使用f:format.date调用该日期格式。

核心原因

当使用f:format.date的%B格式符时,月份名称并非来自tx_news的语言文件,而是由**PHP的系统区域设置(locale)**提供。这就是为什么修改tx_news语言文件无效,删除文件后仍显示标准丹麦语月份——PHP的da_DK locale已内置默认月份名称。

tx_news自带的month.xx翻译键仅用于插件内部特定场景(如归档菜单的月份选项),不影响f:format.date的%B输出。

解决方案

方法1:改用自定义翻译键(推荐)

放弃%B格式符,改为通过翻译系统调用自定义月份名称,步骤如下:

  1. 修改TS中的日期格式定义:
plugin.tx_news._LOCAL_LANG.da.dateFormat = %d %m %Y

(用%m获取两位数字的月份,后续用于匹配翻译键)

  1. 在TS Setup中添加自定义月份翻译:
plugin.tx_news._LOCAL_LANG.da.month.01 = Jannewaris
plugin.tx_news._LOCAL_LANG.da.month.02 = Febnewaris
# 依次添加12个月份的自定义名称
  1. 修改模板Partials/List/list.html中的日期渲染逻辑,拆分日期并调用翻译:
<time itemprop="datePublished"
      class="event-fa-time"
      datetime="{f:format.date(date:newsItem.datetime, format:'Y-m-d')}">
    <f:format.date date="{newsItem.datetime}" format="d" />
    <f:translate key="month.{f:format.date(date:newsItem.datetime, format:'m')}" />
    <f:format.date date="{newsItem.datetime}" format="Y" />
</time>

(如需保留原格式中的分隔符,可自行调整拼接方式)

方法2:自定义日期格式化ViewHelper(进阶)

如果希望保留类似%B的简洁调用方式,可以自定义一个ViewHelper,在内部替换月份名称为自定义翻译。核心逻辑:

  • 获取日期的月份数字
  • 调用tx_news的自定义月份翻译
  • 拼接成目标日期格式

方法3:修改PHP locale(不推荐)

若坚持使用%B,需修改PHP的da_DK locale对应的月份名称,但此操作会影响整个系统的日期显示,且需要服务器权限修改locale文件,不建议在共享主机环境使用。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:47:48