gpt4 book ai didi

python - Django Translation - 翻译动态字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:21 24 4
gpt4 key购买 nike

我们使用 Django 作为后端 REST API 服务器。我正在寻找翻译作为推送通知发送到我们应用程序的文本。我是翻译新手。

文本驻留在配置文件中并且因每个用户而异。

NOTIFICATION_TEXT = {
'access_request': '%(user_name)s has requested to access your document %(story_name)s, please review '}

我看到了谷歌翻译功能,如果给出最后一句话理解 user_name 和 story_name 是不变的,它可以完美翻译。我在 Django 中寻找类似的魔术带功能,我可以在将最终消息发送给 RESTAccept-language header 中收到的语言环境中的用户之前包装最终消息称呼。但这似乎不可能。

据我所知,我需要预先标记需要用 ugettext 翻译的文本,并定义语言和中间件设置。然后使用

生成 locale特定文件

django-admin makemessages -l de

然后在为该特定语言环境生成的 django.po 文件中手动提供翻译后的文本供 Django 引用。

但鉴于我的消息是动态的,在 dic 中,我不知道如何标记。或者还有其他方法吗?

编辑:

数据访问如下

data['msg'] = settings.NOTIFICATION_TEXT['access_request'] % \
dict(
user_name=get_user_name(sender),
story_name=story.story_name
)

最佳答案

在插入动态上下文之前,您必须对消息应用适当的翻译函数,在这种情况下(我假设是模块级别)这将是惰性函数之一:

from django.utils.translation import ugettext_lazy as _

NOTIFICATION_TEXT = {
'access_request': _('%(user_name)s has requested to access your document %(story_name)s, please review ')
}

makemessages -l de 然后会在语言环境的 django.po 中创建一个条目:

msgid "%(user_name)s has requested to access your document %(story_name)s, please review "
msgstr ""

翻译后的字符串必须包含所有未更改的动态占位符:

msgid "%(user_name)s has requested to access your document %(story_name)s, please review "
msgstr "%(user_name)s hat Zugang zu Ihrem Dokument %(story_name)s beantragt, bitte überprüfen Sie "

应用翻译功能后,将 (user_name, story_name) 上下文应用于消息很重要,您的架构非常适合此时已经强制执行:

message = NOTIFICATION_TEXT['access_request'] % {'user_name': 'foo', 'story_name': 'bar'}

关于python - Django Translation - 翻译动态字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com