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 _
,而不是常规的 ugettext
。 ugettext
将在导入期间评估翻译,此时除了使用默认语言别无选择; ugettext_lazy
将在呈现时进行评估,此时它具有可用的正确语言信息。
我在 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 _
,而不是常规的 ugettext
。 ugettext
将在导入期间评估翻译,此时除了使用默认语言别无选择; ugettext_lazy
将在呈现时进行评估,此时它具有可用的正确语言信息。