假设我有一个 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/