Django翻译:添加自定义翻译

时间:2015-12-01 09:39:16

标签: django translation

我有一个用户可以填写文本字段的应用程序。 如果用户输入的字符串位于.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个文件中添加句子或单词。当我尝试在源文件中添加一个 not 的翻译时,当我调用 makemessages 时,我会将它们评为:

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

如何解决这个问题?如果我没有以正确的方式这样做(我已经阅读了很多关于django translation),那么还有什么方法呢?

1 个答案:

答案 0 :(得分:0)

Django文档提到constructor(...allArguments) { super(...allArguments); } 无法提取计算值的翻译,如您的示例所示。

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

自动执行此操作的一种方法是编写自定义makemessages命令,该命令将检索要从数据库转换的字符串并将它们放入某个文件中,可由django-admin定位,例如:带翻译标签的makemessages