我们使用Django
作为我们的后端REST API
服务器。我正在寻找翻译文本作为推送通知发送到我们的应用程序。我是翻译新手。Django翻译 - 翻译动态字符串
该文本驻留在配置文件中,并且因用户而异。
NOTIFICATION_TEXT = {
'access_request': '%(user_name)s has requested to access your document %(story_name)s, please review '}
我看到了谷歌翻译功能,它完美地翻译了,如果给出理解user_name和story_name的最后一句是不变的。 我在Django寻找类似的魔术乐队功能,在发送给REST
调用的Accept-language
标头中收到的语言环境中的用户之前,我可以最终包装最终消息。但这似乎不可能。
据我所知,我需要预先标记需要用ugettext
翻译的文本,并定义语言和中间件设置。然后使用
django-admin makemessages -l de
产生locale
特定的文件,然后在生成的django.po
文件针对特定区域手动给翻译文本Django的参考。
但我坚持如何标记鉴于我的消息是动态的,在一个dic里面。或者有其他方法吗?
编辑:
的数据如下
data['msg'] = settings.NOTIFICATION_TEXT['access_request'] % \
dict(
user_name=get_user_name(sender),
story_name=story.story_name
)
好吧,现在我有'django.po'文件与abo ve'msgid'并插入了'msgstr',但它仍不能翻译最终文本。在我的'settings.py'文件中,我有'LANGUAGE_CODE ='de'','USE_I18N = True',在中间件中添加了''django.middleware.locale.LocaleMiddleware'',在Sesssion之后和Common之前。不知道他们是否有帮助,但以防万一。 – garg10may
看起来很对我。您应该添加调试以检查哪种语言已激活。你可以在django shell中尝试它并手动激活德语。 ('django.utils.translation.activate( '德')')。顺便说一句,你有没有叫'compilemessages'? – schwobaseggl
现在就运行'compilemessages',然后手动激活'de',从shell进行测试,但没有得到翻译后的字符串。你的意思是我的,我必须在应用翻译功能后应用上下文? – garg10may