Django 没有加载正确的语言环境文件

Django not loading the correct locale files

我在 Django 加载正确的翻译 (.po/.mo) 文件时遇到问题。

我知道我的翻译工作正常,因为当我将 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

但是当我将我的翻译设置为使用 urls.py 中的 i18n_patterns 时,它不会在我访问时加载我的法语 (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)

您需要在 models.py 和 forms.py 中 import ugettext_lazy as _,而不是常规的 ugettextugettext 将在导入期间评估翻译,此时除了使用默认语言别无选择; ugettext_lazy 将在呈现时进行评估,此时它具有可用的正确语言信息。