在我的情况下,我想在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或任何相关内容)?
答案 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',
...