2012-05-31 25 views
0

我已經繼承了一個需要i18​​n的Django項目。我已經完成了i18n所需的所有常規操作,我通常在其他項目中執行此操作並且通常可以正常工作。但在這一個它不工作,這是Django 1.3,所以我去了國際化的文檔,並遵循所有的步驟,但它不工作。如何調試Django i18n?

我不知道會出現什麼問題,因爲我沒有自己設置所有的項目,我不知道它的哪一部分可能會打破國際化。

在base.html文件我加了典型的語言從文檔中選擇+的LANGUAGE_CODE標籤能得到一些反饋:

<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> 
Lang:{{ LANGUAGE_CODE }} 
<input type="submit" value="Go" /> 
</form> 

無論我做什麼,在LANGUAGE_CODE總是返回默認EN-US或任何我設置在設置中。

我該檢查哪些東西?從哪裏開始,要改變什麼?

回答

1

根據the docs,將LANGUAGE_CODE設置爲安裝語言代碼。你確定你已經在設置文件中將它從en-us中更改了嗎?

您是否嘗試過在設置文件的末尾打印出語言代碼,然後以非deamon模式運行,以便您可以看到它的輸出?就我個人而言,我使用多部分配置文件,並且以前有問題,後者的設置文件已經改變了我期望進一步工作的東西。這有可能嗎?

如果它看起來正確的設置文件的結尾,那麼它可能沒有被正確地饋送到模板。你可以嘗試像this一樣推動自己,以確保。

另一件事要檢查;你確定它不是settings.LANGUAGE_CODE你需要嗎?我不記得那是不是在我頭頂的模型中。

+0

我嘗試了使用和不使用LANGUAGE_CODE,使用runserver,使用Apache,守護進程和非守護進程...... – Bastian

+0

在設置結束時打印出值是什麼給了你的? –

+0

但感謝mutli設置文件的想法,我認爲他們很乾淨,但發現了一些恐怖現在,並且locale中間件沒有被導入! i18n現在可以運行:)我將立即清理它。 – Bastian