Язык Django по умолчанию

#django #internationalization

#django #интернационализация

Вопрос:

У меня есть приложение django, для которого по умолчанию установлен французский язык. Все строки перевода в коде и HTML-страницах на французском языке. Переключение между разными языками работает нормально. Но теперь мне нужно скрыть французский язык, поэтому я изменил LANGUAGE_CODE на ‘en-us’, но страница по умолчанию всегда отображается на французском, я что-то пропустил?

Спасибо

Комментарии:

1. попробуйте изменить локальный язык вашего браузера, может быть, это поможет

2. Когда-нибудь находил решение?

3. Насколько я понимаю, это ошибка в Django. Просто неверно предполагать, что пользователи всех языковых культур настроили свои браузеры на свой родной язык. Пользователи по-прежнему ожидают, что их языковые веб-сайты будут на их языке.

Ответ №1:

Я столкнулся с этой проблемой совсем недавно, вот как мне удалось ее исправить, не меняя язык локали любого браузера:

идея состоит в том, чтобы создать промежуточное программное обеспечение для принудительного перевода языка на основе параметра LANGUAGE_CODE, вот как может выглядеть промежуточное программное обеспечение:

 from django.conf import settings
from django.utils import translation

class ForceLangMiddleware:

    def process_request(self, request):
        request.LANG = getattr(settings, 'LANGUAGE_CODE', settings.LANGUAGE_CODE)
        translation.activate(request.LANG)
        request.LANGUAGE_CODE = request.LANG
  

сохраните этот фрагмент в качестве промежуточного программного обеспечения.запустите py в своем основном приложении (я предполагаю, что оно называется main), а затем добавьте main.middleware.Перенесите программное обеспечение в ваш промежуточный класс

Ответ №2:

я нашел это https://gist.github.com/vstoykov/1366794 . Это заставляет оборудование I18N выбирать настройки.LANGUAGE_CODE в качестве исходного языка по умолчанию.

Ответ №3:

У меня тоже были некоторые проблемы с этим однажды… Это потому, что большинство современных веб-браузеров отправляют свои настройки локали в запросе, и Django автоматически использует этот язык вместо этого, если может.

К сожалению, я не помню, что я сделал, чтобы решить эту проблему, но я надеюсь, что это даст вам несколько указаний, где искать или искать.

Комментарии:

1. Спасибо, это была проблема, решаемая путем изменения языка локали браузера

Ответ №4:

В вашем settings.py файл у вас есть LANGUAGES кортеж.

 LANGUAGES = (
    ('en', gettext('English')),
    ('sv', gettext('Swedish')),
    ('no', gettext('Norwegian')),
)
  

Если вы используете многоязычный Django, вы также можете задать DEFAULT_LANGUAGE параметр:

 DEFAULT_LANGUAGE = 1 # the first one in the list
  

Комментарии:

1. DEFAULT_LANGUAGE, похоже, не работает для меня, и эта переменная не упоминается в документации настроек django

2. какую версию Django вы используете в данный момент?

3. DEFAULT_LANGUAGE это django_multilingual настройка; Аппель, вероятно, использовал это, а затем принял его за настройку Django: django-multilingual.googlecode.com/svn/trunk/docs/_build/html /…