昨天使用zipimport方式引入django.zip,但是遇到了international无效的问题。早上在Google group上反映了这个问题,没想到下午就有好心人回答了我的问题。具体的解决办法是把django.zip/conf/locale目录解压出来,比如放到和settings.py同一个目录下的i18n中,然后在settings.py添加如下代码:
appdir = os.path.abspath(os.path.dirname(__file__))
LOCALE_PATHS = (
os.path.join(appdir, 'i18n', 'locale'),
)
如果想使用django.middleware.locale.LocaleMiddleware的话需要在main.py里添加如下代码:
from django.conf import settings
sys.modules[settings.__module__].__file__ = os.path.join(
os.path.dirname(settings.LOCALE_PATHS[0]), '__init__.py'
)
接下来在settings.py引入LocaleMiddleware:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.doc.XViewMiddleware',
)
这样一来就不用强制把LANGUAGE_CODE设成zh_CN了,它会根据浏览器的请求来选择对应的语言。