hn/intl

此扩展覆盖了 typo3 的日期视图助手,并使用 php-intl 函数进行渲染。

安装: 5

依赖: 0

建议: 0

安全: 0

类型:typo3-cms-extension

v0.0.2-alpha 2019-06-28 09:39 UTC

This package is auto-updated.

Last update: 2024-09-16 01:53:23 UTC


README

Packagist Version Packagist Packagist Packagist Build status

为 TYPO3 提供更好的日期格式化的即插即用解决方案

此扩展覆盖了默认的日期视图助手,使用 php-intl 进行国际化来渲染日期。

它是如何工作的

您通常像这样使用日期视图助手

<f:format:date date="now" format="d.m.Y" />

这将给出 21.01.2019,这通常没问题,但此扩展将解析格式字符串,并确定您想要简短日期格式,并且使用当前 sys_language 实际上会给出 Jan 21, 2019(如果您的语言是 en)。

然而,这可以根据语言完全改变。如果您想看到所有可能的本地化日期,请在您的机器或计划托管的服务器上运行 php -r 'use IntlDateFormatter as I; foreach (resourcebundle_locales("") as $locale) echo "$locale: ".(new I($locale, I::LONG, I::SHORT))->format(new DateTime("now"))."\n";'

根据您的格式,猜测将改变,以下是一些示例

格式正常(基于格式)intl(en)intl(de)
d.m.y21.01.196/21/1927.06.19
d.m.Y21.01.2019Jan 21, 201927.06.2019
d. F Y21. January 2019January 21, 201921. Januar 2019
l d. F YMonday, January 21, 2019Monday, January 21, 2019Montag, 21. Januar 2019
H:i10:3010:30 AM10:30
H:i:s10:30:0010:30:00 AM10:30:00
H:i:s T10:30:00 UTC10:30:00 AM GMT+110:30:00 MEZ
H:i:s e10:30:00 UTC10:30:00 AM Central European Standard Time10:30:00 Mitteleuropäische Normalzeit
d.m.Y H:i21.01.2019 10:30Jan 21, 2019, 10:30 AM21.01.2019, 10:30
d. F Y H:i21. January 2019 10:30January 21, 2019 at 10:30 AM21. Januar 2019 um 10:30

此表仅列出了示例。基本上,只与您使用的字符有关。

有些情况下,格式很重要。我尝试自动检测这些情况,因此无法读取的格式(如 Ymd(没有空格))、格式如 c(ISO 8601)、r(RFC 2882)和 u(时间戳)以及部分格式(如仅 Y(年份))都不会被修改。这意味着此代码仍然会按预期工作

<time datetime="{date -> f:format.date(format: 'c')}">{date -> f:format.date(format: 'd. F Y H:i')}</time>

如果您仍然需要禁用这种魔法行为,您有 3 种选择

  1. 您可以通过将 intl="0" 传递给视图助手来禁用此魔法: <f:format:date date="now" format="d.m.Y" intl="0" /> 这有一个缺点,那就是您现在依赖于此扩展,因为属性 intl 通常不存在。然而,这是一种在特定情况下调整它的好方法。
  2. 您可以在 intl 扩展配置中禁用它(键:disableInExtensions)。如果集成一个扩展,出于某种原因需要按预期运行或已内置适当的语言支持,请使用此方法。
  3. 您可以完全禁用视图助手的覆盖。使用 intl 扩展配置并检查 disableOverride。您仍然可以使用此扩展,但您必须显式导入命名空间并使用视图助手。

为什么不单独的视图助手?

  • 您不需要学习新的视图助手,您会自动使用更好的日期格式。
  • 现有扩展将自动改进,无需额外工作。
  • 如果您考虑到使用此扩展:对此扩展没有硬性要求,并且可以无额外努力回退到默认渲染。

运行测试

本项目包含一些基本测试,以确保在composer.json中描述的所有typo3版本中都能正常工作。这些测试由bitbucket运行,并在bitbucket-pipelines.yml中定义。

要本地运行它们,本项目提供了一些composer脚本。只需克隆项目,运行composer install,然后运行composer db:start,等待几秒钟,然后运行composer test。您还可以运行composer test -- --filter TestCase来运行特定的文本类/方法/数据集。

以下是可用命令列表

  • composer db:start将使用docker命令启动数据库。如果您已有可用数据库,则无需使用它,但需要定义typo3Database*变量。
  • composer db:stop不出所料地再次停止数据库...并删除它。
  • composer test将运行所有可用测试。如果您的第一次运行失败,则可能需要运行cc
  • composer test:unit将仅运行单元测试。
  • composer test:functional将仅运行功能测试。
  • composer cc将删除一些临时文件。如果您的功能测试没有明显原因而失败,请尝试此方法。