Mam istniejącą wielojęzyczną aplikację Django, którą przesyłam do Django 1.4. Obsługa I18n jest obecnie oparta na kilku brzydkich atakach, chciałbym, aby korzystały z wbudowanych modułów i18n Django.Domyślny język Django i18n bez prefiksów ścieżki
Jednym z ograniczeń jest to, że nie chcę zmieniać adresów URL, które już istnieją. Ta strona była przez jakiś czas aktywna i istnieją linki do niej, których nie chcę łamać ani przekierowywać. Schemat URL działa tak: English treść jest w katalogu głównym witryny, podczas gdy inne języki używać prefiksów w nazwie domeny:
angielskich adresów URL:
/
/articles/
/suggestions/
hiszpańskich adresów URL:
/es/
/es/articulos/
/es/sugerencias/
Mam przetłumaczone strony pracujące z modułami i18n Django 1.4, ale tak naprawdę, naprawdę, naprawdę chcę umieścić wszystkie angielskie adresy URL w/en /. Próbowałem kilka różnych hacków, w tym zdefiniowanie non-zinternacjonalizowany adresy URL dla wersji angielskiej:
def build(callback):
return callback('',
url(_(r'^$'), home.index, name="home"),
url(_(r'^articles/$'), content.article_list, name='article_list'),
url(_(r'^suggestions/$'), suggestions.suggestions, name='suggestions'),
)
urlpatterns = build(patterns)
urlpatterns += build(i18n_patterns)
To sprawia, że adresy URL rozwiązać prawidłowo, ale {% url%} tag zrobić odwrotny rozdzielczość nie działa .
Jaki jest najlepszy sposób na uzyskanie niezindeksowanych adresów URL w języku angielskim?
tylko pytanie: czy Twój '_' non-leniwy wersja fo gettext? tj. 'from django.utils.translation import ugettext jako _' –
Nie, to jest leniwa wersja: django.utils.translation.ugettext_lazy –
czy możesz wypróbować ją z nie-leniwą wersją i sprawdzić, czy działa? –