Drupal设置PHP日期格式时如何实现意大利语月份全小写显示
解决方案
PHP原生本地化日期格式符F输出的意大利语月份默认首字母大写,没有对应直接输出全小写月份的格式符,因此需要对输出结果做二次处理,以下是几种可落地的方案:
方案1:模板内快速修改(适合单页面/局部场景)
如果是在Twig模板中调用日期输出,直接在日期过滤器后追加|lower多字节小写过滤器即可,示例代码:
- 原写法:
{{ content.field_date|date('d F Y') }} - 修改后写法:
{{ content.field_date|date('d F Y')|lower }}
该方案自动适配多字节编码,不会影响日期中的数字部分,输出结果直接符合意大利语全小写月份规范。
方案2:自定义模块全局生效(适合全站统一日期格式场景)
如果需要全站意大利语环境下d F Y格式的日期统一做小写处理,无需修改各处模板,可以在自定义模块中添加预处理钩子:
/** * Implements hook_preprocess_date(). */ function your_custom_module_preprocess_date(&$variables) { $current_lang = \Drupal::languageManager()->getCurrentLanguage()->getId(); // 仅匹配意大利语环境和指定日期格式时做小写转换 if ($current_lang === 'it' && $variables['format'] === 'd F Y') { $variables['date'] = mb_strtolower($variables['date']); } }
将代码中的your_custom_module替换为你的自定义模块名称,启用模块后即可全局生效。
方案3:PHP代码层处理(适合自定义PHP逻辑输出日期的场景)
如果是自定义PHP代码中输出日期,使用mb_strtolower()函数包裹日期输出即可:
$date = \Drupal::service('date.formatter')->format($timestamp, 'custom', 'd F Y'); // 意大利语环境下转小写 if (\Drupal::languageManager()->getCurrentLanguage()->getId() === 'it') { $date = mb_strtolower($date); } echo $date;
内容的提问来源于stack exchange,提问作者ff-apps
相关产品推荐
相关产品推荐

