语法错误:非ASCII字符但未声明编码

6

我应该在这个setting.py文件中将一些英文字符改成中文,但是出现了错误。

我知道它的意思是错误信息中没有声明编码方式,但是我已经阅读了一些帖子,仍然不知道在哪里/如何使其发生。

在我的setting.py中,我有类似以下内容

OSCAR_DASHBOARD_NAVIGATION = [
{
    'label': _('dashboard'),
    'icon': 'icon-th-list',
    'url_name': 'dashboard:index',
},

但是需要将导航更改为中文,所以最终看起来像这样

OSCAR_DASHBOARD_NAVIGATION = [
{
    'label': _('仪表板'),
    'icon': 'icon-th-list',
    'url_name': 'dashboard:index',
},

编辑:我已经阅读了可能是重复的帖子,并尝试了那篇帖子中的方法,但是我没有收到错误信息,但相对于Pedru的答案,我的页面没有显示,但现在它已经像魔术一样运行。


@Ilja尝试过了,没有报错,但在浏览器中却什么也没有显示,如果我输入英文,字符就会出现,但如果我将英文与中文组合或只输入中文,则只会显示一个空格,什么都没有。 - Dora
在源代码中应保留 _('dashboard') 并提供汉语翻译(使用 gettext)。您不需要硬编码语言。这里有一个代码示例,可以展示源代码中的 gettext('world') 使用选择的语言。- 代码中的单词“world”始终为英文,但如果相应的翻译可用,则可以在浏览器中显示任何语言的“world”。 - jfs
1个回答

19
尝试添加
# -*- coding: utf-8 -*-

在文件开头,确保你的文件真正采用 utf-8 编码。


尝试过了,没有报错,但在浏览器中却什么都没有显示,如果我输入英文,字符会出现,但如果我将英文与中文组合或只输入中文,则仅显示一个空格,没有其他内容。 - Dora
1
我看到你使用了 _( ) 函数,请尝试将 'label': _('仪表板') 替换为 'label': '仪表板' - Pedru
太棒了!谢谢,这个运作得非常好。 - Dora
实际上,我在 setting.py 文件中发布的内容,json 已经粘贴在那里以覆盖默认的 json 信息(对不起,第一次使用 Python,我不太清楚你真正的意思),但是如果使用 ugettext 而不是 gettext,我就不必改变那么多东西了? - Dora
这里的问题有两个:_( )函数通常是gettext.gettext()的别名,它允许将字符串保存在某种寄存器中以便于翻译。其想法是使用英文在_()中创建你的字符串,如 label = _('apple'),然后在另一个文件中可以指定'apple'在法语中为'pomme'。这样你可以在不改变代码的情况下让软件进行翻译。因此,如果您想要中文标签,正确的方法是创建中文翻译文件并添加“dashboard”的翻译。 - Pedru
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接