假设我有一个DateInterval,比如“P10DT1H53S”,我想将其格式化为人类可读的字符串,如:
10 days, 1 hour and 53 seconds
现在,如果您只打算为英语做这件事,这相当容易。但我正在寻找一种干净且国际化的方法,使用gettext。
不幸的是,gettext一次只处理一个复数,而不是多个(年,日,小时等),所以我不能用ngettext来实现我想要的。复数与语言的区别很大,所以它并不像在需要时迭代和添加“s”那么简单。另外,我必须将它作为一个整体构建,因为我不确定每种语言是否会分开日期,时间......使用逗号(用一个“和”而不是最后一个逗号)。
答案 0 :(得分:1)
最新国际化数据的最佳存储库是CLDR project,由Unicode Consortium托管。特定于语言环境的复数规则是数据集的一部分。
存储库数据在一堆XML文件中可用。有一些用于操作数据的工具,包括用于生成与POSIX兼容的区域设置文件的代码。
我不确定在PHP中使用数据需要做多少工作(不是我的专长),但从长远来看它可能是值得的。
答案 1 :(得分:0)
您可以对gettext使用多个调用,而不是仅在一个调用中执行。这应该绕过复数限制。