更改默认语言

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。