【问题标题】:Django translation: add custom translationDjango 翻译:添加自定义翻译
【发布时间】:2015-12-01 09:39:15
【问题描述】:

我有一个应用程序,用户可以在其中填写文本字段。 如果用户输入的字符串在.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 的内容),该怎么办?

【问题讨论】:

  • 我似乎找不到重复的内容,但我已经看到它建议,然后才制作一个单独的包含翻译的 .py 文件...
  • 没有理由投票结束这个问题,它是完全有效的,而且在 imo 中一点也不主观。

标签: django translation


【解决方案1】:

Django 文档提到 makemessages 无法提取计算值的翻译,就像您的示例中发生的那样。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多