私はDjango 1.4に移植している既存の多言語Djangoアプリケーションを持っています。 I18nのサポートは現在、いくつかの醜いハックに基づいています。私はDjangoに組み込まれたi18nモジュールを使用したいと思います。Django i18nデフォルトの言語(パスプレフィックスなし)
1つの制約は、すでに存在するURLを変更したくないということです。このサイトはしばらくの間アクティブだったし、そこへの外部リンクがあるので、壊れたりリダイレクトしたりしたくない。他の言語は、ドメイン名に接頭辞を使用しながら、英語のコンテンツは、サイトのルートにある:
英語のURL:
/
/articles/
/suggestions/
スペインのURL:
/es/
/es/articulos/
/es/sugerencias/
のURLスキームは、このように動作します
私はDjango 1.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を達成するにはどうすればよいですか?
だけの質問は:gettextのFOあなたの '_'非怠惰なバージョンですか?つまり、 'django.utils.translation import ugettext as _' –
いいえ、それは怠惰なバージョンです:django.utils.translation.ugettext_lazy –
あなたはnon-lazyバージョンでそれを試してみることができますか? –