У меня есть приложение на нескольких языках, но я хочу, чтобы keepthe admin site всегда был на английском языке. Каков наилучший способ сделать это?
Спасибо заранее.
У меня есть приложение на нескольких языках, но я хочу, чтобы keepthe admin site всегда был на английском языке. Каков наилучший способ сделать это?
Спасибо заранее.
Рассмотрим использование промежуточного программного обеспечения, которое переопределяет языковой стандарт для определенных URL-адресов. Вот пример:
from django.conf import settings
from django.utils.translation import activate
import re
class ForceInEnglish(object):
def process_request(self, request):
if re.match(".*admin/", request.path):
activate("en")
else:
activate(settings.LANGUAGE_CODE)
Это всего лишь идея реализации.
from django.conf import settings
from django.utils import translation
class ForceInEnglish:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.path.startswith('/admin'):
request.LANG = 'en'
translation.activate(request.LANG)
request.LANGUAGE_CODE = request.LANG
return self.get_response(request)
Сохранить в 'middleware.py' и включить в MIDDLEWARE_CLASSES (1.9 и ранее) или MIDDLEWARE (1.10+) в файле настроек.
Я бы установил два файла настроек:
settings.py
для всего проектаadmin_settings.py
только для администратораЗатем размещайте этот проект в отдельных доменах:
example.com
admin.example.com
Если у вас есть отдельные файлы настроек для администратора и остальной части проекта, вы можете переопределить языковые настройки в admin_settings.py
У вас, вероятно, будут очень похожие файлы настроек, поэтому следующая строка в верхней части admin_settings.py
будет удобной:
from my_project.settings import *
Это интересная проблема, и я не мог найти простой ответ в прямом направлении, поэтому похоже, что для этого потребуется решение из коробки. Вот две идеи.
Это может быть грубый способ сделать это, но попытались ли вы удалить все языковые пакеты в django.contrib.admin.locale, за исключением en? Я не пробовал это сам, но я думаю, что django по умолчанию вернется на английский, если это единственный язык, который нужно отобразить. Он может просто в конечном итоге использовать базовые локальные файлы django, если он не может его найти, но стоит попробовать.
Единственным другим вариантом, о котором я мог подумать, было изменение домашней страницы администратора на пользовательский вид, где вы вручную устанавливали переменную django_language в сеансе или cookie на английский, а затем перенаправляли на обычную страницу администратора.
Смотрите эти ссылки для некоторых идей.
http://code.djangoproject.com/browser/django/trunk/django/views/i18n.py