我希望我的应用程序能够提供多种语言版本(比如说两种,一种是默认英语,另一种是默认英语)。
这两个选项都可以在我的主页上找到,并且必须显示一个链接,使用户能够选择他选择的语言。
我正在阅读Django官方文档为了这
所以任何人都可以让我知道如何做到这一点的总体想法。
还有一件事......在settings.py中有默认值LANGUAGE_CODE = 'en-us'给定,但因为我希望我的应用程序使用不止一种语言,所以我如何在此处指定该国家/地区代码。
就像这样有效 LANGUAGE_CODE = 'en-us','es-MX (西班牙语)' 或者我必须以某种方式做到这一点。
这样做的目的是什么.po在此延伸。
设置.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
文件。继承人文档为了那个原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)