Django 多语言问题

Django 多语言问题,django,django-multilingual,Django,Django Multilingual,我希望我的应用程序将提供多种语言(比如说两种,一种是默认英语,另一种是其他语言) 这两个选项都可以在我的主页上找到,而且必须有一个链接,让用户能够选择他的语言 我正在为此事阅读Django官员的报告 因此,任何人都可以让我知道如何做到这一点 还有一件事……在settings.py中有默认的语言代码='en-us',但由于我希望我的应用程序使用多种语言,因此我可以在此处指定国家代码 像这样的工作语言_代码=‘en-us’、‘es-MX(西班牙语)’或者我必须以某种方式来做 这个.po扩展的目的是什

我希望我的应用程序将提供多种语言(比如说两种,一种是默认英语,另一种是其他语言)

这两个选项都可以在我的主页上找到,而且必须有一个链接,让用户能够选择他的语言

我正在为此事阅读Django官员的报告

因此,任何人都可以让我知道如何做到这一点

还有一件事……在settings.py中有默认的语言代码='en-us',但由于我希望我的应用程序使用多种语言,因此我可以在此处指定国家代码

像这样的工作语言_代码=‘en-us’、‘es-MX(西班牙语)’或者我必须以某种方式来做


这个.po扩展的目的是什么。

您想要(或本地化)您的软件。使用C时,它通常通过(与
.po
文件相关)完成。可能是django使用了这些东西。

settings.py

LANGUAGE_CODE='en_us'
gettext = lambda s: s
LANGUAGES = (
    ('en', gettext('English')),
    ('de', gettext('German')),
)

MIDDLEWARE_CLASSES = (
    ...
    'lang.SessionBasedLocaleMiddleware',
)
from django.conf import settings

from django.utils.cache import patch_vary_headers
from django.utils import translation

class SessionBasedLocaleMiddleware(object):
    """
    This Middleware saves the desired content language in the user session.
    The SessionMiddleware has to be activated.
    """
    def process_request(self, request):
        if request.method == 'GET' and 'lang' in request.GET:
                language = request.GET['lang']
                request.session['language'] = language
        elif 'language' in request.session:
                language = request.session['language']
        else:
                language = translation.get_language_from_request(request)

        for lang in settings.LANGUAGES:
            if lang[0] == language:
                translation.activate(language)

        request.LANGUAGE_CODE = translation.get_language()

    def process_response(self, request, response):
        patch_vary_headers(response, ('Accept-Language',))
        if 'Content-Language' not in response:
            response['Content-Language'] = translation.get_language()
        translation.deactivate()
        return response
lang.py

LANGUAGE_CODE='en_us'
gettext = lambda s: s
LANGUAGES = (
    ('en', gettext('English')),
    ('de', gettext('German')),
)

MIDDLEWARE_CLASSES = (
    ...
    'lang.SessionBasedLocaleMiddleware',
)
from django.conf import settings

from django.utils.cache import patch_vary_headers
from django.utils import translation

class SessionBasedLocaleMiddleware(object):
    """
    This Middleware saves the desired content language in the user session.
    The SessionMiddleware has to be activated.
    """
    def process_request(self, request):
        if request.method == 'GET' and 'lang' in request.GET:
                language = request.GET['lang']
                request.session['language'] = language
        elif 'language' in request.session:
                language = request.session['language']
        else:
                language = translation.get_language_from_request(request)

        for lang in settings.LANGUAGES:
            if lang[0] == language:
                translation.activate(language)

        request.LANGUAGE_CODE = translation.get_language()

    def process_response(self, request, response):
        patch_vary_headers(response, ('Accept-Language',))
        if 'Content-Language' not in response:
            response['Content-Language'] = translation.get_language()
        translation.deactivate()
        return response
访问不同的语言
http://example.com/?lang=de


最后让django创建您的
.po
文件。这是答案。

谢谢你的回复。。。。。。。我已经按照这个o-project进行了翻译/[但是在我的模板中,我没有得到翻译的msgYou创建了Po文件并翻译了它们,最后编译了这些文件?您链接的文档仍然有效。我已经创建了Po文件并翻译了它们,还有二进制文件(.mo)在我的locale msg文件夹中。并在我的模板中添加代码行,如文档中所述…………但它以英语显示hello…………我还没有编辑models.py或views.py……我正在本地服务器中尝试此操作,然后将其部署到实际服务器…………这是问题所在还是它也可以在本地服务器上顺利工作dev server可以。Y你只能翻译静态文本。要翻译模型数据,你必须修改模型。只需谷歌搜索“django可翻译模型”