Контекстная локализация в Django - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть приложение 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 Ответ

0 голосов
/ 06 ноября 2011

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

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

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/#translating-url-patterns

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