2011-08-22 78 views
0

我目前以編程方式調用dumpdata以從我的django應用程序中導出數據。以編程方式調用call_command('dumpdata')後忽略語言設置

from django.core.management import call_command 
# and various other imports not directly relevant 

response = HttpResponse(mimetype='application/json',) 
response['Content-Disposition'] = "filename=%s" % backup_name 
sys.stdout = response 
call_command('dumpdata') 

出口效果很好(如果稍微慢)但事後settings.LANGUAGE_CODE被忽略,所有的頁面恢復回原來的語言英語。任何想法爲什麼發生這種情況?

我使用了以下內容: - Python 2.7版 - Django的1.3 - 羅塞塔管理語言翻譯

回答

2

這可能是由代碼在django.core.management.base.BaseCommand對象引起的。在代碼中的解釋是:

# Switch to English, because django-admin.py creates database content 
# like permissions, and those shouldn't contain any translations. 
# But only do this if we can assume we have a working settings file, 
# because django.utils.translation requires settings. 

來完成實際的語言切換是代碼:

from django.utils import translation 
translation.activate('en-us') 
+0

謝謝,幫助解決問題。 我已經按照上面的代碼使用:'translate.activate(settings.LANGUAGE_CODE)' – macdhuibh

+0

如果用戶在會話中更改了它,是否會產生正確的語言? –

相關問題