Django翻译:添加自定义翻译



我有一个应用程序,用户可以在其中填充文本字段。如果用户输入的字符串在.po翻译文件中,我想"尝试"翻译它。

因此,在我的一个细节视图中,我做了如下操作:

class InterrogationDetailView(generic.DetailView):
    model = Interrogation
    def get_context_data(self, **kwargs):
        context = super(InterrogationDetailView, self)
            .get_context_data(**kwargs)
        if self.object is not None:
            context[u'translated_word'] = {
                u'description': _(self.object.description),
            }
        return context

这很好,似乎有效。因此它在.po文件中进行搜索。所以我想在那些.po文件中自己添加句子或单词。当我试图在我的源文件中添加一个而不是的翻译时,当我调用makemessages时,我会得到如下评论:

#~ msgid "I'm a test"
#~ msgstr "Godsmack - Cryin' like a b"

如何解决这个问题?如果我做这件事的方式不对(我读了很多关于django翻译的书),该怎么办?

Django文档提到makemessages不能像您的例子中那样提取计算值的翻译。

为了对从其他地方检索到的字符串进行翻译,您必须将它们作为字符串文字放在代码中。这可以通过@physicok7建议的方式来实现,创建一个单独的.py来列出所有这些字符串。

实现自动化的一种方法是编写自定义django-admin命令,该命令将从数据库中检索要翻译的字符串,并将它们放入某个文件中,该文件可由makemessages定位,例如带有翻译标签的.txt

最新更新