多语言问题 [英] Issues with multiple languages

查看:141
本文介绍了多语言问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望我的应用程序可以使用多种语言(请说两个,一个是默认的英语和一个)。

I want my app will be available in multiple languages (let say two,one is default english and one more).

这两个选项在我的家中可用页面上必须有一个链接,用户可以选择他的语言选择。

And these both options available in my home page and there must be a link shown which makes user able to select his choice of language.

我正在阅读Django官方

I am reading the Django official documentation for this

的.djangoproject.com / en / dev / topics / i18n /rel =nofollow>文档,所以任何人都可以让我知道一般的想法我该怎么做。

so any one can let me know the general idea how I can do that.

还有一件事......在settings.py中有默认的 LANGUAGE_CODE ='en-us'

and one more thing......in settings.py there is default LANGUAGE_CODE = 'en-us' given,BUT as I want my app in more then one language so How i can specify that country code here.

像这样工作LANGUAGE_CODE ='en-我们','es-MX(西班牙文)'或者我必须以某种方式做。

like this works LANGUAGE_CODE = 'en-us','es-MX (Spanish)' or I have to do it in some way.

这个 .po extension in this。

And what is the purpose of this .po extension in this.

推荐答案

settings.py

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

MIDDLEWARE_CLASSES = (
    ...
    'lang.SessionBasedLocaleMiddleware',
)

lang.py

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 文件。请参阅文档

And finaly let django create your .po files. Heres the documentation for that.

这篇关于多语言问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆