Ho un multi-lingua Django app esistente che sto porting su Django 1.4. Il supporto I18n è attualmente basato su alcuni brutti hack, mi piacerebbe farlo usare i moduli i18n integrati di Django.Django lingua predefinita i18n senza percorso prefissi
Un vincolo è che io non voglio cambiare gli URL che sono già in atto. Questo sito è attivo da un po 'e ci sono collegamenti esterni ad esso che non voglio rompere o reindirizzare. Lo schema di URL funziona così: il contenuto inglese è alla radice del sito, mentre altri linguaggi utilizzano prefissi nel nome di dominio:
gli URL inglesi:
/
/articles/
/suggestions/
gli URL spagnoli:
/es/
/es/articulos/
/es/sugerencias/
ho le pagine tradotte che lavorano con i moduli i18n Django 1,4 s, ma davvero, davvero, davvero vuole mettere tutti gli URL inglese sotto/it /. Ho provato un paio di hack diversi, tra cui la definizione di URL non internazionalizzato per la versione inglese:
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)
Questo rende gli URL risolvere correttamente, ma il tag {% url%} faccia risoluzione inversa non funziona .
Qual è il modo migliore per realizzare non prefissati gli URL in lingua inglese?
solo una questione: è il vostro '_' la versione non-pigro fo gettext? vale a dire 'da django.utils.translation importazione ugettext come _' –
No, è la versione pigro: django.utils.translation.ugettext_lazy –
si può provare con la versione non pigro e vedere se funziona? –