[英]Django JavaScript Translation gettext is not defined
我的 javascript function 包含以下內容:
document.getElementById("example").innerHTML = gettext("This is an example");
我的 urls.py 看起來像:
urlpatterns = [
url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
url(r'^admin/', admin.site.urls),
url(r'^', include('project.urls')),
url(r'^login/$', auth_views.login, {'template_name': 'login.html', 'authentication_form': LoginForm}, name = 'login'),
url(r'^logout/$', auth_views.logout, {'next_page': '/login'}),
url(r'^i18n/', include('django.conf.urls.i18n')),
]
在我的模板中,我有:
<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
上面使用 gettext() 的翻譯不起作用。 出現參考錯誤,指出未定義 gettext()。 但是,在同一個 javascript 文件中,我有:
var monthNames = [gettext("January"), gettext("February"), gettext("March"), gettext("April"), gettext("May"), gettext("June"), gettext("July"), gettext("August"), gettext("September"), gettext("October"), gettext("November"), gettext("December")];
並且不會提示引用錯誤。 月份翻譯有效,但示例無效。
我不確定,但請嘗試檢查腳本的順序。 請看,如果您在加載 javascript-catalog 的腳本標記之前使用上述示例的 gettext() 函數。
我確實遇到了完全相同的問題,即使我在 gettext() 之前有 script 標簽。
簡單的修復是確保目錄在 urlpatterns 中的應用程序之前:
urlpatterns = [
path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),
...
<your app>
]
這是在前端添加管理日期選擇器的完整指南。
forms.py
from django.contrib.admin import widgets
from django import forms
from .models import Student
class StudentForm(forms.ModelForm):
class Media:
css = {
'all': (
'/static/admin/css/widgets.css',
)
}
js = [
# '/admin/jsi18n/',
'/static/admin/js/core.js',
]
class Meta:
model = Student
fields = [
"first_name",
"last_name",
"birth_date",
]
widgets = {
'birth_date': widgets.AdminDateWidget()
}
網址.py
from django.views.i18n import JavaScriptCatalog
from django.urls import path
urlpatterns = [
path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),
]
add_student.html
<form action="{% url 'some_url' %}" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
{{ form.media }}
<script src="/jsi18n/"></script>
在 jquery 塊之前添加它。 希望這可能會有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.