更改默认语言¶
GeoNode的默认语言是英语,但GeoNode用户可以通过大多数GeoNode页面右上角的下拉菜单更改界面语言。一旦用户选择了一种语言,GeoNode就会记住该语言供后续页面使用。
地理节点配置¶
以root用户身份编辑geonode配置文件 /home/geonode/geonode/geonode/settings.py
(或 /etc/geonode/settings.py
如果GeoNode是使用安装的 apt-get )和更改 LANGUAGE_CODE
设置为所需的默认语言。
注解
可以在全局Django配置文件中找到语言代码列表 /usr/local/lib/python2.7/dist-packages/django/conf/global_settings.py
(或 /var/lib/geonode/lib/python2.7/site-packages/django/conf/global_settings.py
如果GeoNode是使用安装的 apt-get )。
例如,要使法语成为默认语言,请使用::
LANGUAGE_CODE = 'fr'
不幸的是,Django覆盖了此设置,为用户浏览器的语言设置提供了优先级。例如,如果 LANGUAGE_CODE
设置为法语,但用户已将其操作系统配置为西班牙语,因此首次访问GeoNode时可能会看到西班牙语版本。
其他步骤¶
如果这不是所需的行为,则所有用户最初都应看到默认值 LANGUAGE_CODE
,无论其浏览器设置如何,请执行以下步骤以确保Django忽略浏览器语言设置。(用户可以随时使用下拉语言菜单更改语言。)
作为 root 在GeoNode的站点包中创建新目录
mkdir /usr/lib/python2.7/dist-packages/setmydefaultlanguage
或
mkdir /var/lib/geonode/lib/python2.7/site-packages/setmydefaultlanguage
如果GeoNode是使用安装的 apt-get 。
以root用户身份创建和编辑新文件 /usr/lib/python2.7/dist-packages/setmydefaultlanguage/__init__.py
并添加以下行
class ForceDefaultLanguageMiddleware(object):
"""
Ignore Accept-Language HTTP headers
This will force the I18N machinery to always choose settings.LANGUAGE_CODE
as the default initial language, unless another one is set via sessions or cookies
Should be installed *before* any middleware that checks request.META['HTTP_ACCEPT_LANGUAGE'],
namely django.middleware.locale.LocaleMiddleware
"""
def process_request(self, request):
if request.META.has_key('HTTP_ACCEPT_LANGUAGE'):
del request.META['HTTP_ACCEPT_LANGUAGE']
在GeoNode配置文件的末尾 /home/geonode/geonode/geonode/settings.py
(或 /etc/geonode/settings.py
如果GeoNode是使用安装的 apt-get )添加以下行以确保执行上述类
MIDDLEWARE_CLASSES += (
'setmydefaultlanguage.ForceDefaultLanguageMiddleware',
)
重新启动¶
您需要根据您选择的安装方法重新启动GeoNode。
作为实例,以防您使用 NGINX 使用 UWSGI ,您将需要以root用户身份运行以下命令
service uwsgi restart
service nginx restart
有关以不同语言编辑GeoNode页面和创建新GeoNode翻译的信息,请参阅翻译GeoNode。