更改默认语言

geonode的默认语言是英语,但是geonode用户可以通过大多数geonode页面右上角的下拉菜单更改界面语言。一旦用户选择了一种语言,geonode就会在随后的页面中记住该语言。

地理节点配置

作为根用户编辑geonode配置文件 /home/geonode/geonode/geonode/settings.py (或) /etc/geonode/settings.py 如果已使用 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 如果已使用 apt-get

例如,要使法语成为默认语言,请使用:

LANGUAGE_CODE = 'fr'

不幸的是,django重写了这个设置,给了用户浏览器优先级的语言设置。例如,如果 LANGUAGE_CODE 设置为“法语”,但用户已将其操作系统配置为西班牙语他们第一次访问geonode时可能会看到西班牙语版本。

附加步骤

如果这不是期望的行为,并且所有用户最初都应该看到默认的 LANGUAGE_CODE ,无论浏览器的设置如何,请执行以下步骤以确保django忽略浏览器语言设置。(用户始终可以使用下拉式语言菜单随时更改语言。)

AS root 在geonode的站点包中创建新目录

mkdir /usr/lib/python2.7/dist-packages/setmydefaultlanguage

mkdir /var/lib/geonode/lib/python2.7/site-packages/setmydefaultlanguage

如果已使用 apt-get .

以根用户身份创建和编辑新文件 /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 如果已使用 apt-get )添加以下行以确保执行上述类

MIDDLEWARE_CLASSES += (
    'setmydefaultlanguage.ForceDefaultLanguageMiddleware',
)

重新启动

您需要根据您选择的安装方法重新启动geonode。

以防您使用 NGINX 具有 UWSGI ,作为根用户,您需要运行以下命令

service uwsgi restart
service nginx restart

有关以不同语言编辑geonode页面和创建新geonode翻译的信息,请参阅翻译geonode。