php - 如何将日期间隔格式化为文本(国际化)

标签 php datetime localization internationalization gettext

假设我有一个 DateInterval,例如“P10DT1H53S”,我想将其格式化为人类可读的字符串,例如:

10 days, 1 hour and 53 seconds

现在,如果您只打算为英语做这件事,这相当容易。但我正在寻找一种干净且国际化的方式来做到这一点,即使用 gettext。

不幸的是,gettext 一次只能处理一个复数,而不是多个(年、日、小时等),所以我不能使用 ngettext 来实现我想要的。复数与语言有很大的不同,所以它不像在需要的地方迭代和添加“s”那么简单。另外,我必须将它作为一个整体来构建,因为我不确定每种语言都会使用逗号(用一个“and”而不是最后一个逗号)分隔天、小时、……。

最佳答案

最新国际化数据的最佳存储库是 CLDR project , 由 Unicode Consortium 主持.特定于区域设置的复数规则是数据集的一部分。

存储库数据在一堆 XML 文件中可用。有一些用于处理数据的工具,包括生成 POSIX 兼容语言环境文件的代码。

我不确定您需要做多少工作才能在 PHP 中使用数据(这不是我的专长),但从长远来看,这可能是值得的。

关于php - 如何将日期间隔格式化为文本(国际化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5210117/

相关文章:

php - 如何通过 JavaScript slider 实时更改 CSS 颜色值?

php - 如何在重定向时显示错误消息?

javascript toISOString() 忽略时区偏移量

c# - 将 ISO 8601 格式的时间段转换为刻度/毫秒

c# - 我如何强制整个应用程序的本地化文化为 en-US

javascript - Angular 模块中的 moment.locale 将不起作用

php - DHT11 温度/湿度传感器 Web 服务错误

google-app-engine - 日期时间字段的 ndb 查询错误 - Google App Engine

ios - NSFetchedResultsController 与 NSFetchedResultsController UILocalizedIndexedCollat​​ion

php - 插入查询不适用于 MySQL