我有一个Django项目,一个网站,但是每种翻译都由一个域表示,英文为drenglish.com,西班牙语为drspanish.com,葡萄牙语为drportuguese.com。
只有一个管理员,一个数据库
我看到大多数使用Django(2.0和python 3.7)的主机,您需要通过ssh linux(putty)来托管。
但是我如何才能使3个域同时工作?
抱歉,菜鸟问题是我第一次建立网站
如果有任何帮助我用来检测域并提供正确语言的中间件
class SetLanguageToDomain:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
current_site = get_current_site(request).domain
if current_site == 'www.drportuguese.com':
user_language = 'pt_BR'
elif current_site == 'www.drspanish.com':
user_language = 'es_ES'
else:
user_language = 'en'
translation.activate(user_language)
request.session[translation.LANGUAGE_SESSION_KEY] = user_language
response = self.get_response(request)
return response
答案 0 :(得分:2)
Django使用此中间件Function process()
Dim tmp As String
tmp = Dir("C:\Users\Calhoun\Documents\REPORTING\Correspondence\*.txt")
Do While tmp > ""
If Len(Dir("C:\Users\Calhoun\Documents\REPORTING\Correspondence\STATIC_FILE_NAME.txt")) <> 0 Then
Kill "C:\Users\Calhoun\Documents\REPORTING\Correspondence\STATIC_FILE_NAME.txt"
End If
Name "C:\Users\Calhoun\Documents\REPORTING\Correspondence\" & tmp As "C:\Users\Calhoun\Documents\REPORTING\Correspondence\STATIC_FILE_NAME.txt"
DoCmd.RunMacro "RunQueries"
tmp = Dir
Loop
End Function
来了解使用哪种语言来呈现您的响应。如果您检查代码,则将在模块django.middleware.locale.LocaleMiddleware
中调用一个函数:translation
。
这是函数的源代码
get_language_from_path
要找到匹配项,django使用项目的language_code_prefix_re = re.compile(r'^/(\w+([@-]\w+)?)(/|$)')
def get_language_from_path(path, strict=False):
"""
Return the language code if there's a valid language code found in `path`.
If `strict` is False (the default), look for a country-specific variant
when neither the language code nor its generic variant is found.
"""
regex_match = language_code_prefix_re.match(path)
if not regex_match:
return None
lang_code = regex_match.group(1)
try:
return get_supported_language_variant(lang_code, strict=strict)
except LookupError:
return None
设置来查找类似LANGUAGES
的内容,您可以检查LocalMiddleWare的代码和it-IT
来将中间件更改为您的需求。
答案 1 :(得分:1)