2012-06-05 100 views
3

我想翻譯一個使用內置i18n的django應用程序。我已經根據教程標記了要翻譯和創建的文本並編譯了語言文件(.po/.mo),並且沒有發生錯誤。我也改變了USE_I18N爲true的設置文件,並添加下面一行到urls.py作爲教程指示:Django i18n setlang視圖給出錯誤404

(r'^i18n/', include('django.conf.urls.i18n')), 

我也是在settings.py定義允許語言的列表,如由教程指導。

然後我創建了一個新的頁面HTML模板和教程給了一個語言選擇頁面的代碼複製:

<form action="/i18n/setlang/" method="post"> 
{% csrf_token %} 
<input name="next" type="hidden" value="{{ redirect_to }}" /> 
<select name="language"> 
    {% get_language_info_list for LANGUAGES as languages %} 
    {% for language in languages %} 
    <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option> 
    {% endfor %} 
</select> 
<input type="submit" value="Go" /> 
</form> 

該網頁的作品完美了,但是當我點擊「轉到」,它告訴我有一個錯誤加載頁面:

Failed to load resource:http://localhost:8000/i18n/setlang/ 
the server responded with a status of 404 (NOT FOUND) 

我試圖通過該鏈接替換變量變化的重定向,但是這給了我同樣的結果。我試圖改變表單的行動路徑和urls.py萬一有一些雙重命名,這給了我同樣的錯誤。

我一直在閱讀教程和自述文件,以及一些國際化的文件,似乎無法找到它不起作用的原因,我真的很感激答案。謝謝你

回答

2

你確定你使用了正確的urls.py,即在你的項目根目錄中,而不是在子目錄中嗎?

,如果你將其更改爲會發生什麼:

from django.http import HttpResponse 
... 
(r'^i18n/', lambda x: HttpResponse("Test")), 

你可以去後http://localhost:8000/i18n/

+0

非常感謝您的回答,儘管我在閱讀您的文章前2分鐘才找到另一個解決方案。我繞過了包含的django代碼,並且包含了一個到urls.py中的視圖的直接鏈接,儘管我必須重命名並取出斜槓: 'url(r'^ setlang','django.views.i18n.set_language '), '

'(select_language.html) 再次感謝您的努力。 –