gpt4 book ai didi

python - Django 显示 msgid 而不是 msgstring

转载 作者:行者123 更新时间:2023-11-30 23:14:15 26 4
gpt4 key购买 nike

我已在设置中正确设置 LOCALE_PATHS

LANGUAGE_CODE 设置为 it

作为测试,我将应用程序翻译成的唯一语言是 it

在我的一个 View 中,我有 {% trans "MY_MESSAGE_ID"%} ,在 django.po 中我有

msgid "MY_MESSAGE_ID"
msgstr "It is working"
<小时/>

如果使用 it 语言的访问者打开应用程序,他会看到“正在运行”

如果使用 en 语言的访问者打开应用,他会看到“MY_MESSAGE_ID”

Django 不应该永远向最终用户显示msgid。 Django 应该提供第一个可用的翻译作为后备,尤其如果我在 LANGUAGE_CODE 中定义它。有什么办法可以实现这种行为吗?

<小时/>

我读到,这个问题的解决方案是使用“It isworking”作为消息ID。我认为这个解决方案是 Not Acceptable ,原因如下:

  • 进行 en 翻译是没有用的,因为消息 ID 是已经是翻译本身了。

  • 某些消息 ID 会非常长。

  • “消息 ID”指的是必须与语言无关的内容。

  • 如果我想更改默认语言,我必须重新编写整个应用程序文本内容。

最佳答案

Django 与许多其他人一样在内部使用 gettext;同样,.mo.po 格式也属于它们的实用程序并由它们的实用程序生成。如果您不使用完整消息作为 msgid,则您没有使用 gettext 的全部功能。

请参阅 glibc 的文档示例:

SYNOPSIS

#include <libintl.h>

char * gettext (const char * msgid);
char * dgettext (const char * domainname, const char * msgid);
char * dcgettext (const char * domainname, const char * msgid,
int category);

DESCRIPTION

The gettext, dgettext and dcgettext functions attempt to translate a text string into the user's native language, by looking up the translation in a message catalog.

The msgid argument identifies the message to be translated. By convention, it is the English version of the message, with non-ASCII characters replaced by ASCII approximations. This choice allows the translators to work with message catalogs, called PO files, that contain both the English and the translated versions of each message, and can be installed using the msgfmt utility.

此外,GNU gettext 还提供了实用程序 msgen

Creates an English translation catalog. The input file is the last created English PO file, or a PO Template file (generally created by xgettext). Untranslated entries are assigned a translation that is identical to the msgid.

此外,gettext 实用程序可以找到新消息的模糊匹配,这将加快翻译工作,并且还会注意到翻译何时过期并将其标记为重新翻译。如果您在模板中使用无意义的消息 ID,这是不可能的。

关于python - Django 显示 msgid 而不是 msgstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886652/

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