簡體   English   中英

Django JavaScript 未定義翻譯gettext

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM