#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 /…