Python Django人性化自然时间模板标签仅部分翻译

Python Django人性化自然时间模板标签仅部分翻译,python,django,Python,Django,Django版本2.1 我有一个显示事件的应用程序。我想展示这个事件发生的时间有多长,或者在未来有多远。为了做到这一点,我使用了人性化软件包中的naturaltime templatetag {{event.date | naturaltime}} #models.py中的我的模型 类事件(models.model): # ... 其他领域 日期=型号。日期时间字段(…) 我希望结果是荷兰语,所以我在settings.py中更改了语言:language\u code='nl-nl' 问题是:

Django版本2.1

我有一个显示事件的应用程序。我想展示这个事件发生的时间有多长,或者在未来有多远。为了做到这一点,我使用了人性化软件包中的naturaltime templatetag

{{event.date | naturaltime}}

#models.py中的我的模型
类事件(models.model):
# ... 其他领域
日期=型号。日期时间字段(…)
我希望结果是荷兰语,所以我在settings.py中更改了语言:
language\u code='nl-nl'

问题是: 当当前时间与模型中设置的日期时间之间的时差大于24小时时,转换仅为部分转换。 过去的时间示例:

# english
one hour ago
# dutch, correct
een uur geleden

# enlish
6 days, 2 hours ago
# dutch translation, only partial
6 dagen, 2 uur ago
具有未来时间的示例

# english
2 hours from now
# dutch translation, correct
over 2 uur

# enlish
1 month from now
# dutch translation, only partial
1 maand from now
如您所见,“以前”和“现在”部分在时差大于24小时时不会被翻译

我深入源代码,找到了以下相关信息,但仍然找不到罪犯。 Naturaltime在差异超过1天时调用默认的templatetag timesince/timeuntil。timesince templatetag转换正确,但当结果传递回naturaltime以添加“ago”和“from now”部分时,该结果根本不会转换

#第211-292行
@寄存器过滤器
def自然时间(值):
"""
For date和time值显示多少秒、分钟或小时前
与表示字符串的当前时间戳返回相比较。
"""
如果不是isinstance(值,日期):#datetime是date的子类
返回值
now=datetime.now(utc如果知道(值),否则无)
如果值<现在:
增量=现在-值
如果delta.days!=0:
#转换器:delta将包含类似“2个月”或“1个月,2周”的字符串
返回{('%(delta)s ago')%{'delta':defaultfilters.timesince(value,now,time_字符串={
#翻译器:“自然时间过去”字符串将包含在
#“%(增量)s前”
'year':npgettext_lazy('naturaltime-pass','%d year','%d years'),
'month':npgettext_lazy('naturaltime-pass','%d month','%d months'),
“周”:npgettext_lazy('naturaltime-pass','%d week','%d weeks'),
“天”:npgettext_lazy('naturaltime-pass'、'%d天'、'%d天'),
'hour':npgettext_lazy('naturaltime-pass','%d hour','%d hours'),
'minute':npgettext_lazy('naturaltime-pass','%d minute','%d minutes')
})}
#再来点艾利夫和其他的
...
其他:
增量=值-现在
如果delta.days!=0:
#转换器:delta将包含类似“2个月”或“1个月,2周”的字符串
返回{('%(delta)s from now')%{'delta':defaultfilters.timeuntil(value,now,time_字符串={
#翻译人员:“自然时间未来”字符串将包含在
#“%(增量)s从现在起”
'year':npgettext_lazy('naturaltime-future','%d year','%d years'),
'month':npgettext_lazy('naturaltime-future','%d month','%d months'),
“周”:npgettext_lazy('naturaltime-future','%d周','%d周'),
'day':npgettext_lazy('naturaltime-future','%d天','%d天'),
'hour':npgettext_lazy('naturaltime-future','%d hour','%d hours'),
'minute':npgettext_lazy('naturaltime-future','%d minute','%d minutes')
})}
#再来点艾利夫和其他的
...

#第259-262行和第302-305行似乎起作用了
msgid“一小时前”
msgid_复数“%(计数)s小时前”
msgstr[0]“een uur geleden”
msgstr[1]“%(计数)s uur geleden”
...
msgid“一小时后”
msgid_复数“%(计数)s小时后”
msgstr[0]“在een uur上”
msgstr[1]“超过%(计数)s uur”
#第253-254和310-311行,不工作
msgid“%(增量)秒前”
msgstr“%(三角洲)s geleden”
...
msgid“%(增量)s从现在起”
msgstr“超过%(增量)s”
我是做错了什么,还是这是人性化软件包或荷兰语翻译文件中的错误


注:我没有使用任何自定义翻译文件,我不知道问题出在哪里,但升级到Django 2.2解决了问题。

只是提醒一下:你说的是Django 2.1,但是链接和代码来自于
2.2
(当前的主程序)。这里是代码的
2.1
版本的链接,但您的问题似乎在两个版本中都存在。实际上不是,我升级到了2.2,问题就解决了。非常感谢。