django: request.LANGUAGE_CODE в JavaScriptCataLog не возвращает отображаемую страницу - PullRequest
0 голосов
/ 28 апреля 2018

Как и в моем случае, я хочу перевести строки в сценарии 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 голосов
/ 29 апреля 2018

Я исправил это. Язык в возвращаемом скрипте определяется функцией get в JavaScriptCatalog. Я скопировал его код в базу кода django, вставил в приложение languages ​​/ views.py и произвел замену майнера:

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',
             ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...