django:JavaScriptCataLog中的request.LANGUAGE_CODE不返回显示的页面

时间:2018-04-28 09:47:00

标签: javascript django catalog

在我的情况下,我想在js脚本中翻译字符串。基本上我可以使它工作。我发现'jsi18n'视图返回的内容取决于我的chrome浏览器的首选语言。   如果我将首选语言设置为中文(简体),一切都很顺利。但是如果我将最喜欢的语言改为英语,'jsi18n'视图将返回空目录数组。

我发现控制变量或相关变量是'request.LANGUAGE_CODE'。这是通过测试视图完成的:

def test_language(request):
    res = "";
    res += "translation.get_languages = %s<br>"%(translation.get_language(),)
    res += "request.LANGUAGE_CODE = %s<br>"%(request.LANGUAGE_CODE,)
    res += "get_language() = %s<br>"%(get_language(),)
    return HttpResponse(res);

上述代码的结果与我的浏览器设置一致。

那么有没有办法控制浏览器发送的请求内容(LANGUAGE_CODE或任何相关内容)?

1 个答案:

答案 0 :(得分:0)

我修好了。 返回脚本中的语言由JavaScriptCatalog中的get函数确定。我在django代码库中复制了它的代码并粘贴到了一个app&#39; languages / views.py&#39;并做了一个矿工改变:

class JavaScriptScriptCatalog(View):
...
def get(self, request *args, **kwargs):
    locale = request.GET('LANG')  #replace the original locale = get_language()
    ...

所有依赖项目都需要复制。 与项目urls.py:

urlpatterns = [
    ...
    path('languages/',include('languages.urls') ),
    ...

和languages / urls.py:

...
from . imporm views
...
urlpatterns = [
...                                      
    path('jsi18n/', views.JavaScriptCatalog.as_view(domain='djangojs',packages=['languages',]), name='javascript-catalog'),
...

在我们需要插入以下内容的模板中

{% get_current_language as LANGUAGE_CODE %}
<script type="text/javascript" src="{% url 'javascript-catalog' %}?LANG={{LANGUAGE_CODE}}"></script>

并且不要忘记在您的设置中确保此行:

Template = [ {
    ...
    'OPTIONS': {
        'context_processors': [
             ...
             'django.template.context_processors.i18n',
             ...