Django1.4に移植している既存の多言語Djangoアプリがあります。I18nのサポートは現在、いくつかの醜いハックに基づいています。Djangoの組み込みi18nモジュールを使用するようにしたいと思います。
1つの制約は、すでに配置されているURLを変更したくないということです。このサイトはしばらくの間アクティブであり、私が壊したりリダイレクトしたりしたくない外部リンクがあります。urlsスキームは次のように機能します。英語のコンテンツはサイトのルートにありますが、他の言語はドメイン名にプレフィックスを使用します。
英語のURL:
/
/articles/
/suggestions/
スペイン語のURL:
/es/
/es/articulos/
/es/sugerencias/
翻訳されたページはDjango1.4のi18nモジュールで動作しますが、実際には、すべての英語のURLを/en/の下に配置したいと考えています。英語版の非国際化URLの定義など、いくつかの異なるハックを試しました。
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)
これにより、URLは正しく解決されますが、逆解決を行うための{%url%}タグは機能しません。
プレフィックスのない英語のURLを実現するための最良の方法は何ですか?