gpt4 book ai didi

django - 如何将计算值的条目正确添加到 django 国际化消息文件中?

转载 作者:行者123 更新时间:2023-12-04 01:02:57 25 4
gpt4 key购买 nike

Django 文档指出:

The caveat with using variables or computed values, as in the previous two examples, is that Django's translation-string-detecting utility, django-admin.py makemessages, won't be able to find these strings.



这对我来说很好,我已经准备好手动为已翻译变量的所有可能值提供翻译。但是怎么做呢?

假设我的模板代码中有这样的:
{% trans var %}

var 是从数据库中提取的,我知道它的所有可能值 - 假设可能的值是“Alice”和“Bob”。

我以为我需要做的就是提供以下条目:
msgid "Alice"
msgstr "Alicja"

在 django.po 文件中。不幸的是,每当我在那之后运行 djangoadmin makemessages 时,这些条目都会被注释掉:
#~ msgid "Alice"
#~ msgstr "Alicja"

我做错了什么?我是否误解了翻译计算值的想法?

最佳答案

我们目前也在解决这个问题。虽然我们做得不好,但我们确实有一个相当烦人的丑陋黑客来解决它。

我们只是在代码中的某处定义一个“虚拟”函数(例如您的 models.py 甚至 settings.py),并用我们需要翻译的所有字符串填充它。

from django.utils.translation import ugettext_lazy as _, pgettext

def dummy_for_makemessages():
"""
This function allows manage makemessages to find the forecast types for translation.
Removing this code causes makemessages to comment out those PO entries, so don't do that
unless you find a better way to do this
"""
pgettext('forecast type', 'some string')
pgettext('forecast type', 'some other string')
pgettext('forecast type', 'yet another string')
pgettext('forecast type', 'etc')
pgettext('forecast type', 'etc again')
pgettext('forecast type', 'and again and again')

这个函数永远不会被调用,只是简单地定义它可以防止消息字符串被 makemessages 注释掉。

不是最优雅的解决方案,但它有效。

关于django - 如何将计算值的条目正确添加到 django 国际化消息文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7625991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com