向Django添加新的语言区域设置

时间:2014-12-02 23:43:54

标签: python django locale django-settings

我试图为Django 1.6.8不支持的几种非洲语言添加网站翻译。我不需要管理员使用这些语言,但我确实需要支持他们。

我的网站已经有25种语言的翻译,由Django正式支持的语言,他们按子域划分,所以de.mysite.com是德语。我使用子域中间件来设置基于子域的语言环境,如下所示:

class SubDomainLanguage(object):
    def process_request(self, request):
        prefix = None
        try:
            prefix = request.META['HTTP_HOST'].split('.')[0]
            if prefix == 'no':
                prefix = 'nb'
            request.session['django_language'] = prefix
        except KeyError:
            pass
        if not prefix:
            request.session['django_language'] = 'en'

各种网络搜索让我觉得我已经接近添加对这些语言的支持,但是访问yo.mysite.com会给我这个网站的英文版本,所以有些东西可以帮助我。缺少(de.mysite.com是德语,按预期)。

Yoruba翻译存在于locale / yo / LC_MESSAGES / django.mo和django.po中,而python manage.py compilemessages工作正常。

以下是我的settings.py文件中的相关行:

from django.conf import global_settings
from django.utils.translation import gettext_noop

MIDDLEWARE_CLASSES = (
    ...
    'subdomainmiddleware.SubDomainLanguage',
    'django.middleware.locale.LocaleMiddleware',
    ...
)

global_settings.LANGUAGES += ('ak', gettext_noop('Akan'))
global_settings.LANGUAGES += ('ig', gettext_noop('Igbo'))
global_settings.LANGUAGES += ('rw', gettext_noop('Rwanda'))
global_settings.LANGUAGES += ('sn', gettext_noop('Shona'))
global_settings.LANGUAGES += ('yo', gettext_noop('Yoruba'))
global_settings.LANGUAGES += ('zu', gettext_noop('Zulu'))

EXTRA_LANG_INFO = {
    'ak': {
        'bidi': False,
        'code': 'ak',
        'name': 'Akan',
        'name_local': u'Akan'
    },
    'ig': {
        'bidi': False,
        'code': 'ig',
        'name': 'Igbo',
        'name_local': u'Asụsụ Igbo'
    },
    'rw': {
        'bidi': False,
        'code': 'rw',
        'name': 'Rwanda',
        'name_local': u'Kinyarwanda'
    },
    'sn': {
        'bidi': False,
        'code': 'sn',
        'name': 'Shona',
        'name_local': u'chiShona'
    },
    'yo': {
        'bidi': False,
        'code': 'yo',
        'name': 'Yoruba',
        'name_local': u'èdè Yorùbá'
    },
    'zu': {
        'bidi': False,
        'code': 'zu',
        'name': 'Zulu',
        'name_local': u'isiZulu'
    },
}

import django.conf.locale

LANG_INFO = dict(django.conf.locale.LANG_INFO.items() + EXTRA_LANG_INFO.items())
django.conf.locale.LANG_INFO = LANG_INFO

可能缺少什么?或者可能是错误的顺序?

0 个答案:

没有答案