我是新來的Django,現在我在練Django的國際化,意欲展示我在中國的網頁,但是:不能在Django更新.po文件1.8.8
我做成無論變化django.po文件,並使用compilemesseages
生成.mo文件,即使我刪除.po文件以生成新文件,頁面仍然返回以前的翻譯。 我錯過了什麼嗎?如果有,請告訴我,謝謝:)
這是我的設置:
LANGUAGE_CODE = 'zh-CN'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LANGUAGES = (
('en', ('English')),
('zh_CN', ('中文簡體')),
('zh-hant', ('中文繁體')),
)
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
還我已經添加了'django.middleware.locale.LocaleMiddleware'
爲settings.py
,就像這樣:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
我爲測試這一功能在views.py
:
def test1_view(request):
n = 2
weekdays = [_('Monday'), _('Tuesday'), _('Wednesday'), _('Thursday'), _('Friday'), _('Saturday'),
_('Sunday')]
return HttpResponse(weekdays[n])
的django.po文件在/locale/zh_CN/LC_MESSAGES/django.po產生的,我敢肯定,我不得不刪除#,fuzzy
:
#: testdeploy/views.py:64
msgid "Monday"
msgstr "一"
#: testdeploy/views.py:64
msgid "Tuesday"
msgstr "二"
#: testdeploy/views.py:64
msgid "Wednesday"
msgstr "三"
#: testdeploy/views.py:64
msgid "Thursday"
msgstr "四"
#: testdeploy/views.py:64
msgid "Friday"
msgstr "五"
#: testdeploy/views.py:64
msgid "Saturday"
msgstr "六"
#: testdeploy/views.py:65
msgid "Sunday"
msgstr "七"
然後我用產生的$ python manage.py compilemessages
和的.mo文件,但是當我重新啓動服務器,該頁面仍然與我第一次修改.po
文件時相同:它僅顯示「星期三」而不是「三」。
我對此非常困惑,是否有一些cookie應該清空以確保更改可以正常工作? TOT
PS:我的Django的版本是1.8.8
您需要更改語言才能看到翻譯。要檢查它,刪除'('en',('English')),'行並檢查結果?它有效嗎? –
@Emin Mastizada嗯,恐怕不是。它看起來很奇怪!儘管我刪除了.po和.mo文件,但它仍然可以返回我之前編寫的翻譯... – May
更改了某些內容後,您是否重新啓動了應用程序?僅在重新啓動應用程序時才加載區域設置(停止並啓動runserver –