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