我希望我的应用程序可以使用多种语言(比如两个,一个是默认的英语和一个)。
这两个选项在我的主页上都有,并且必须显示一个链接,使用户能够选择他选择的语言。
我正在为此阅读Django官方documentation
所以任何人都可以让我知道如何做到这一点。
还有一件事......在settings.py中,默认 LANGUAGE_CODE ='en-us'给出,但我希望我的应用程序使用多种语言,所以我怎么样可以在这里指定国家代码。
像这样工作LANGUAGE_CODE ='en-us','es-MX(西班牙语)'或者我必须以某种方式这样做。
这个 .po 扩展的目的是什么。
答案 0 :(得分:3)
<强> 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
文件。继续documentation为此。
答案 1 :(得分:0)
您希望软件internationalization(或本地化)。使用C,它通常通过gettext(与.po
文件相关)完成。可能django
使用这些东西。