Tôi có một ứng dụng Django đa ngôn ngữ hiện có mà tôi đang chuyển sang Django 1.4. I18n hỗ trợ hiện đang dựa trên một số hacks xấu xí, tôi muốn làm cho nó sử dụng mô-đun i18n tích hợp của Django.Ngôn ngữ mặc định Django i18n không có tiền tố đường dẫn
Một hạn chế là tôi không muốn thay đổi các url đã có sẵn. Trang web này đã hoạt động được một lúc và có các liên kết bên ngoài với trang web mà tôi không muốn phá vỡ hoặc chuyển hướng. Đề án url làm việc như thế này: Nội dung tiếng Anh là cội rễ của trang web, trong khi các ngôn ngữ khác sử dụng tiền tố trong tên miền:
url tiếng Anh:
/
/articles/
/suggestions/
url Tây Ban Nha:
/es/
/es/articulos/
/es/sugerencias/
Tôi đã có các trang dịch làm việc với các mô-đun i18n của Django 1.4, nhưng nó thực sự, thực sự, thực sự muốn đặt tất cả các url tiếng Anh dưới/en /. Tôi đã thử một vài hacks khác nhau, bao gồm cả việc xác định các url phi quốc tế hóa cho phiên bản tiếng Anh:
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)
Điều này làm cho các url giải quyết đúng cách, nhưng {% url%} thẻ để làm độ phân giải ngược lại không hoạt động .
Cách tốt nhất để hoàn thành các url tiếng Anh không có tiền tố là gì?
chỉ là một câu hỏi: nó là '_' phiên bản không lười biếng của bạn fo gettext? tức là 'từ django.utils.translation nhập ugettext dưới dạng _' –
Không, đó là phiên bản lười: django.utils.translation.ugettext_lazy –
bạn có thể dùng thử phiên bản không lười và xem nó có hoạt động không? –