2017-04-25 63 views
0

我是新來的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

+0

您需要更改語言才能看到翻譯。要檢查它,刪除'('en',('English')),'行並檢查結果?它有效嗎? –

+0

@Emin Mastizada嗯,恐怕不是。它看起來很奇怪!儘管我刪除了.po和.mo文件,但它仍然可以返回我之前編寫的翻譯... – May

+0

更改了某些內容後,您是否重新啓動了應用程序?僅在重新啓動應用程序時才加載區域設置(停止並啓動runserver –

回答

0

經過近3天,我終於通過Email的幫助解決了這個問題。其實這個問題似乎被某種特定語言的設置,如中國造成的: 我改變了我的settings.py

LANGUAGES = (
    ('en', ('English')), 
    ('zh-CN', ('中文簡體')), 
    ('zh-TW', ('中文繁體')), 
) 

其使用「 - 」而不是「_」,但仍用

$ python manage.py makemessages -l zh_CN 

來生成django.po(其中'_'仍然是相同的)。

@Emin Mastizada,謝謝你們一樣:)