法语本地化持续时间格式

2024-05-02 23:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

Time4J's code example的Python模拟值是什么:

// duration in seconds normalized to hours, minutes and seconds
Duration<?> dur = Duration.of(337540, ClockUnit.SECONDS).with(Duration.STD_CLOCK_PERIOD);

// custom duration format => hh:mm:ss
String s1 = Duration.Formatter.ofPattern("hh:mm:ss").format(dur);
System.out.println(s1); // output: 93:45:40

// localized duration format for french
String s2 = PrettyTime.of(Locale.FRANCE).print(dur, TextWidth.WIDE);
System.out.println(s2); // output: 93 heures, 45 minutes et 40 secondes

很容易获得^{cd1>}:

^{pr2}$

但是,我如何在Python中模拟^{{cd2>}Java代码(不对单元进行硬编码)?


Tags: offormatstringhhoutsystemssmm
3条回答

这个humanize包可能会有所帮助。它有一个法语本地化,或者你可以添加你自己的。对于Python2.7和3.3。在

使用^{} module

>>> import pendulum
>>> it = pendulum.interval(seconds=337540)
>>> it.in_words(locale='fr_FR')
'3 jours 21 heures 45 minutes 40 secondes'

^{} module允许接近所需的输出:

from babel.dates import format_timedelta # $ pip install babel

print(", ".join(format_timedelta(timedelta(**{unit: fields[unit]}),
                                 granularity=unit.rstrip('s'),
                                 threshold=fields[unit] + 1,
                                 locale='fr')
                for unit in "hours minutes seconds".split()))
# -> 93 heures, 45 minutes, 40 secondes

它自动处理语言环境和复数形式,例如,dur = timedelta(seconds=1)它产生:

^{pr2}$

也许更好的解决方案是使用标准工具(如gettext)手动转换格式字符串。在

相关问题 更多 >