Отключение локализации для определенных приложений в Django - PullRequest
2 голосов
/ 18 марта 2012

Есть ли способ отключить локализацию для определенных приложений в настройках Django?

Для этого есть две возможные причины:

  • Отключить локализацию в приложениях администратора, например, contrib / admin, поскольку администраторы предпочитают использовать английский, а не местный язык.

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

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

Привет.

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Нет такой настройки, чтобы отключить перевод для определенных приложений.

Что касается вашего первого варианта использования, наличие администратора на другом языке легко достигается с помощью специального промежуточного программного обеспечения, проверьте этот фрагмент:

http://source.mihelac.org/2009/11/12/django-set-language-for-admin/

Если схема URL сторонних приложений проста, возможно, вы можете использовать тот же подход, чтобы установить для них другой (по умолчанию) язык.

1 голос
/ 18 марта 2012

Если вы включите LocaleMiddleware, вы можете установить соответствующий файл cookie или переменную сеанса для этого пользователя.Я обычно реализую раскрывающийся список доступных языков для системы.Пользователь выбирает язык, и на основании этого я устанавливаю сеанс или куки для этого пользователя.Это позволяет администратору оставаться на английском языке, в то время как другие области переводятся.

Вот порядок поиска (из документов):

First, it looks for a django_language key in the current user's session.

Failing that, it looks for a cookie.

The name of the cookie used is set by the LANGUAGE_COOKIE_NAME setting.
(The default name is django_language.)

Failing that, it looks at the Accept-Language HTTP header. This header is sent
by your browser and tells the server which language(s) you prefer, in order by
priority. Django tries each language in the header until it finds one with
available translations.

Failing that, it uses the global LANGUAGE_CODE setting.

РЕДАКТИРОВАТЬ:

Это невозможно через настройки;однако в зависимости от того, как вы используете приложение - вы можете «форсировать» перевод только на тот язык, который вам нужен.Это может вызвать проблемы, если ваши языки RTL (проблемы с отображением).

Решение, на которое вы намекали (удаление реальных файлов перевода gettext), является односторонним, но не рекомендуется.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...