在Django中本地化JavaScript内容时出错

1 投票
1 回答
602 浏览
提问于 2025-04-16 20:26

我遇到了以下错误:

ReferenceError: 找不到变量: gettext

我在我的 urls.py 文件中添加了以下内容:

js_info_dict = { 'domain': 'djangojs', 'packages': ('my_project_name',), }
urlpatterns += patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )

我把这个字符串标记为需要本地化:

var lingualText = gettext("Are you sure you want to delete the photo?");  
var statusConfirm = confirm(lingualText);

我在我的模板中添加了以下行:

<script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>

为了生成包含在 JavaScript 文件中的文本的语言文件,我使用了以下命令:

python /usr/bin/django-admin.py makemessages -d djangojs -l de

我成功生成了所需语言的 djangojs.po 文件,并且也得到了所有在 JS 文件中标记的字符串。当我在 Firebug 中查看输出时,我看到了上面的错误,也就是:

ReferenceError: 找不到变量: gettext

有没有人能告诉我哪里出错了?我是不是在 jsi18n 的路径上有问题?

提前谢谢大家。

1 个回答

0

getext() 是由 {% url django.views.i18n.javascript_catalog %} 这个脚本提供的,所以在你自己的代码之前,一定要确保它被包含进来,比如:

<html>
<head>
    <script type="text/javascript" src="{% url django.views.i18n.javascript_catalog %}"></script>
    <!-- gettext() is now available -->
    <script src="{{ STATIC_URL }}my_script_using_gettext.js"></script>
    ...

撰写回答