Контекстная локализация в Django

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

Все остается прежним, но терминология меняется. например

www.exmaple.com/myria/chemist
www.exmaple.com/myria/biologist
www.exmaple.com/myria/physicist

myria мое богатое интернет-приложение. Слова chemist, biologist а также physicist просто обозначить рабочее пространство. Все приложение Django itselt использует одну и ту же кодовую базу, и больше ничего не меняется.

Я использую django-rosetta для управления переводом и django-localeurl для обеспечения переключения локали на основе URL (в обычных частях сайта).

Я в своем уме о том, как этого добиться. Может быть, какой-то клубок с рамками сайтов?

1 ответ

Краткий ответ: вам это не нужно. В большинстве случаев лучше иметь латинские символы в URL, а не что-то %%- экранировать.

Длинный ответ: DjangoCMS предоставляет зависящий от локали URL для каждой страницы. Вы можете kludge что-то вроде:

from django.utils.translations import ugettext as _
from django import http
...
def myria_view(request, localized_workspace):
    my_workspaces = (
       (_('foo'), foo_view),
       (_('bar'), bar_view),
       (_('buz'), buz_view),
    )
    for ws in my_workspaces:
        if ws[0] == localized_workspace:
            return ws[1](request)
    raise http.Http404

но еще раз, не делай этого. Это просто так неправильно

Обновление: Django делает это из коробки https://docs.djangoproject.com/en/dev/topics/i18n/internationalization/

Другие вопросы по тегам