如何本地化我的WTForms验证消息?

用户

我几乎把我的验证信息本地化了,因为你可以看到它适用于英语和瑞典语:

英语:

enter image description here

瑞典语:

enter image description here

但当我切换到葡萄牙语时,我收到以下错误消息:

Traceback (most recent call last):
  File "/media/Lexar/montao/lib/webapp2/webapp2.py", line 545, in dispatch
    return method(*args, **kwargs)
  File "/media/Lexar/montao/montaoproject/main.py", line 1749, in post
    current_user=self.current_user,
  File "/media/Lexar/montao/montaoproject/main.py", line 466, in render_jinja
    self.response.out.write(template.render(data))
  File "/media/Lexar/montao/montaoproject/jinja2/environment.py", line 894, in render
    return self.environment.handle_exception(exc_info, True)
  File "/media/Lexar/montao/montaoproject/templates/insert_jinja.html", line 249, in top-level template code
    <ul class="errors">{% for error in form.name.errors %}<li>{{ error }}</li>{% endfor %}</ul>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

我想我以前有过这个错误信息,我不知道如何处理它。你能帮帮我吗?为什么出现此错误消息?在

我的表单类的代码是

^{pr2}$

我的.po文件中的翻译部分是

msgid "Name is required"
msgstr "É necessário o nome"

我的python文件是这样开始的

#!/usr/bin/python
# -*- coding: utf-8 -*-

我已经把我能做的一切都设置为unicode和utf-8。在

谢谢你的帮助


已被浏览了5737次
更新日期: 2020-09-28 06:21:36
1 个回答
fefe Tyson

如果您想在翻译中使用unicode字符,则需要使用ugettext_lazy实用程序函数,而不是gettext_lazy。
正如函数名所暗示的那样,主要区别在于ugettext_lazy是unicode,而gettext_lazy不是unicode(顺便说一下,这使得它没有那么有用)。在

在这方面,您可以/应该尽可能使用unicode而不是默认字符串,也就是说,尽快将输入转换为unicode,并尽可能晚地将输出编码为相关编码。在

评论 - 2020年8月7日 16:59

最新Python问答

推荐Python问答