在django翻译中分配msgid有更好的方法吗?

owfi6suc  于 2023-02-14  发布在  Go
关注(0)|答案(1)|浏览(121)

我目前依赖于django翻译,我很好奇是否有比通常的方法更好的方法来选择msgid进行翻译。
例如:
为了标记要翻译的内容,您必须执行以下操作。

variable_name = _("Some Name")

Django用下面的方法选择msgid

msgid "Some Name"
msgstr "Some Name"

我现在想看看是否有一种方法可以将密钥传递给gettext

_("my string", "my_key")


当django拾取变量时,变量名自动变成msgid的实现。

msgid "variable_name"
msgstr "Some Name"

任何想法或建议都将非常有帮助。

fcg9iug3

fcg9iug31#

msgid不能被覆盖,它是翻译的源字符串,但是你可以使用django.utils.translation.pgettext()函数来提供上下文信息:

from django.utils.translation import pgettext

# Use pgettext to specify a custom ID and the original string
print(pgettext("variable_name", "Some Name"))

这将在.po文件中显示为:

msgctxt "variable_name"
msgid "Some Name"
msgstr ""

如果你的字符串需要复数化,有一个django.utils.translation.npgettext()函数:

from django.utils.translation import npgettext

def show_items(count):
    message = npgettext(
        'variable_name',
        'You have one apple',
        'You have {count} apples',
        count
    )
    print(message.format(count=count))

show_items(1) # Output: You have one apple
show_items(3) # Output: You have 3 apples

这将在.po文件中显示为:

msgctxt "variable_name"
msgid "You have one apple"
msgid_plural "You have {count} apples"

相关问题