Django未加载正确的语言环境文件
问题描述:
我在加载正确的翻译(.po/.mo)文件时遇到了Django问题。Django未加载正确的语言环境文件
我知道我的翻译正在工作,因为当我将LANGUAGE_CODE更改为'fr'时,我可以看到我的字符串被翻译。
LANGUAGE_CODE = 'nl'
LANGUAGES = (
('nl', 'Nederlands'),
('fr', 'Frans'),
)
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
]
TIME_ZONE = 'UTC'
USE_I18N = True
但是,当我把我的翻译使用i18n_patterns
在urls.py
当我访问它不加载我的法语(FR)翻译:127.0.0.1:8000/fr/about/
它仍然加载荷兰语(NL)值。
有趣的是,当我访问127.0.0.1:8000/fr/admin/
我可以看到它加载法国管理值,当我访问127.0.0.1:8000/nl/admin/
它加载荷兰的......我一定是做错了什么。
urls.py
urlpatterns = i18n_patterns(
url(r'^$', 'homepage.views.index', name="homepage"),
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^contact/', 'homepage.views.contact_us', name="contact"),
url(r'^about/', 'homepage.views.about', name="about"),
url(r'^admin/', include(admin.site.urls)),
url(r'^jobs/', include(job_urls)),
url(r'^news/', include(news_urls)),
url(r'^search/', include('haystack.urls')),
url(r'^content/(?P<slug>[^\.]+)', 'homepage.views.content', name="view_content"),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
答
您需要import ugettext_lazy as _
在models.py和forms.py,而不是常规的ugettext
。 ugettext
将评估导入过程中的翻译,此时它除了使用默认语言之外别无选择; ugettext_lazy
将在渲染时评估,此时它具有可用的正确语言信息。
+0
这样做的窍门,谢谢! –
您是否翻译过有关该网站的问题? – Jingo
你是什么意思? –
请发布相应的urls.py文件。 – Jingo