如何在Python中格式化像“1小时前”这样的时间增量,以便它是可翻译的

tob*_*bib 5 python datetime internationalization

我想将 python timedelta 对象格式化为“x 分钟/小时/周/月/年前”。

我知道有一些类似的问题,例如:

但是,我没有找到适合我的情况的答案,因为

  • 我不使用 django
  • 我需要将 a 格式化timedelta为字符串,而不是相反
  • 该解决方案应该适用于尽可能多的语言,而不仅仅是英语

这是我当前的代码(摘录,抱歉):

delta = babel.dates.format_timedelta(now - dt, format=format,          
                                     locale=locale)                       
if now > dt:                                                           
    return _(u"%(timedelta)s ago") % {'timedelta': delta}              
else:                                                                  
    return _(u"in %(timedelta)s") % {'timedelta': delta} 
Run Code Online (Sandbox Code Playgroud)

函数babelhttp://babel.pocoo.org/docs/dates/#time-delta-formatting

现在这在英语中效果很好。然而,在德语中,它失败了:上面的代码将转换"2 years ago""vor 2 Jahre"而不是"vor 2 Jahren".

我也很高兴有一个不使用"... ago"措辞的解决方案。只要是相似且可翻译的我都可以接受。

kem*_*che 3

根据我在这里找到的文档,您应该将add_direction=True参数添加到您的format_timedelta调用中。