为什么有时候我在
django.po
语言文件中会得到一个fuzzy
的项目。实际上,在我的项目中,fuzzy
字符串项目是完全独特的。
#: .\users\views.py:81 .\users\views.py:101
#, fuzzy
msgid "username or email"
msgstr "9988"
模糊匹配没问题,但我的模糊匹配结果在页面上没有显示出来,只有英文版本显示出来。这真的很奇怪。
为什么有时候我在django.po
语言文件中会得到一个fuzzy
的项目。实际上,在我的项目中,fuzzy
字符串项目是完全独特的。
#: .\users\views.py:81 .\users\views.py:101
#, fuzzy
msgid "username or email"
msgstr "9988"
模糊匹配没问题,但我的模糊匹配结果在页面上没有显示出来,只有英文版本显示出来。这真的很奇怪。
msgmerge
会将旧的目录中与当前字符串的msgid相似的字符串标记为fuzzy
。它还会将旧目录中标记为模糊的字符串传递到新目录中。
msgfmt
从编译的目录中排除模糊的消息,因为这些翻译很可能是不正确的。翻译人员应检查翻译的正确性(在您发布的情况下,空字符串显然是错误的翻译),并在验证翻译后删除fuzzy
标记。如果您绝对想使用模糊翻译,请向msgfmt
传递--use-fuzzy
参数:
python manage.py compilemessages --use-fuzzy
是的,那个方法非常有效。在我的情况下,使用--use-fuzzy
开关非常有用。
在我的情况下,.po
文件中的行内容(无法工作)如下所示。 所有翻译好的行都能正常工作,除了这一行。
#: ui/templates/theme/html/ltr/vertical-menu-template-nav-dark/login.html:58
#, fuzzy
#| msgid "Already a registered user (Login)"
msgid "Not a registered user (Create account)"
msgstr "Уже зарегистрированный пользователь (логин)"
执行django-admin compilemessages --use-fuzzy
后,这是我的终端输出结果。
(venv3.6.7) Rishikeshs-MacBook-Air:src hygull$ django-admin compilemessages --use-fuzzy
processing file django.po in /Users/hygull/Projects/Python36/Django/Others/AMCProj/amc/src/locale/hi/LC_MESSAGES
processing file django.po in /Users/hygull/Projects/Python36/Django/Others/AMCProj/amc/src/locale/ru/LC_MESSAGES
processing file django.po in /Users/hygull/Projects/Python36/Django/Others/AMCProj/amc/src/locale/en/LC_MESSAGES
最后,在运行命令后,只需重新启动服务器即可,即python manage.py runserver
。
msgmft --check-format -o foo.mo foo.po
。最好直接使用 msgfmt。 - Martin v. Löwis