Django 翻译:添加自定义翻译
Django translation: add custom translation
我有一个应用程序,用户可以在其中填写文本字段。
如果用户输入的字符串在 .po
翻译文件 中,我希望 "try" 对其进行翻译。
所以在我的一个详细视图中,我做了类似的事情:
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 的内容),该怎么办?
Django 文档提到 makemessages
无法提取计算值的翻译,就像您的示例中发生的那样。
为了对您从其他地方检索到的字符串进行翻译,您必须将它们作为字符串文字包含在您的代码中。这可以通过 @psychok7 建议的方式实现,创建一个单独的 .py 列出所有这些字符串。
自动化的一种方法是编写您的自定义 django-admin
命令,该命令将从数据库中检索要翻译的字符串并将它们放入某个文件中,该文件可由 makemessages
定位,例如.txt
带有翻译标签。
我有一个应用程序,用户可以在其中填写文本字段。
如果用户输入的字符串在 .po
翻译文件 中,我希望 "try" 对其进行翻译。
所以在我的一个详细视图中,我做了类似的事情:
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 的内容),该怎么办?
Django 文档提到 makemessages
无法提取计算值的翻译,就像您的示例中发生的那样。
为了对您从其他地方检索到的字符串进行翻译,您必须将它们作为字符串文字包含在您的代码中。这可以通过 @psychok7 建议的方式实现,创建一个单独的 .py 列出所有这些字符串。
自动化的一种方法是编写您的自定义 django-admin
命令,该命令将从数据库中检索要翻译的字符串并将它们放入某个文件中,该文件可由 makemessages
定位,例如.txt
带有翻译标签。