昨天我已经对站点“春天音乐”进行了国际化,添加了英文翻译。
但当时后端是根据session和cookie记录用户的语言设定,
这造成的问题是,同一URL,存在一个中文版、一个英文版。
搜索引擎的爬虫进入后,大多只能抓取并保存对应的中文版(默认语言),而遗失了对应的英文版。
因此,必须对中文版和英文版进行URL差异化。有两种选择:
1. 增加一个参数,类似 http://www.fachun.net/?lang=en
2. 增加一个前缀,类似 http://www.fachun.net/en/
因为第二种更好看,我选择了第二种。整个实现过程较繁琐,下面提供我采用的解决方案。
1. 安装django-localeurl
我安装的版本是2.0.1: https://pypi.python.org/pypi/django-localeurl
该程序包的作用,是允许你在URL中设定语言,而不需要修改原有的URL配置(urls.py中的设置)。
安装完成后,编辑settings.py文件配置:
LANGUAGE_CODE = ‘zh-CN’
LANGUAGES = {
(‘zh-cn’, ‘中文’),
(‘en’, ‘English’),
}
PREFIX_DEFAULT_LOCALE = False
LOCALEURL_USE_ACCEPT_LANGUAGE = TrueMIDDLEWARE_CLASSES = (
#’django.middleware.cache.CacheMiddleware’,
‘django.contrib.sessions.middleware.SessionMiddleware’,
‘localeurl.middleware.LocaleURLMiddleware’,
‘django.middleware.common.CommonMiddleware’,#’django.middleware.locale.LocaleMiddleware’,
…
)
INSTALLED_APPS = (
..
‘localeurl’,
)