Javascript 通过“改变语言”/i18n/setlang/”的;AjaxPost没有在Firefox上做任何事情
我的后端使用Django,前端使用ReactJS 当用户更改其配置文件的语言时,我使用数据对象Javascript 通过“改变语言”/i18n/setlang/”的;AjaxPost没有在Firefox上做任何事情,javascript,django,reactjs,internationalization,Javascript,Django,Reactjs,Internationalization,我的后端使用Django,前端使用ReactJS 当用户更改其配置文件的语言时,我使用数据对象{language:[language\u code]}对/i18n/setlang/执行后ajax调用,并刷新页面 我只是用这个ajax调用来改变语言,一堆带有翻译的.po/.mo文件,我使用gettext()来翻译JS中的行 这在Chrome上非常有效,但在Firefox上完全被忽略,并且没有进行翻译。知道为什么吗 我的中间件包含django.middleware.locale.localemidl
{language:[language\u code]}
对/i18n/setlang/
执行后ajax调用,并刷新页面
我只是用这个ajax调用来改变语言,一堆带有翻译的.po/.mo文件,我使用gettext()来翻译JS中的行
这在Chrome上非常有效,但在Firefox上完全被忽略,并且没有进行翻译。知道为什么吗
我的中间件包含django.middleware.locale.localemidleware
,我的locale\u路径设置如下:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale')
]
更新 chrome上的值
request.META['HTTP\u ACCEPT\u LANGUAGE']
为
fr,fr;q=0.9,在美国;q=0.8,en;q=0.7,pl;q=0.6
(我支持的所有语言)
而在Firefox上,它返回:
en,en-US;q=0.5
仍然不确定为什么…关于这个问题有一个问题我在进行AJAX调用时将用户首选项保存在数据库中,然后在用户获得主页视图时更新
会话[translation.LANGUAGE\u session\u KEY]
值,从而解决了这个问题
from django.utils import translation
class MainPageView(TemplateView):
template_name = 'index.html'
def get(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return super(MainPageView, self).get(self, request, *args, **kwargs)
profile = request.user.profile
if profile.preferred_language is None or profile.preferred_language == "":
profile.preferred_language = request.LANGUAGE_CODE
profile.save()
else:
request.session[translation.LANGUAGE_SESSION_KEY] = profile.preferred_language
return super(MainPageView, self).get(self, request, *args, **kwargs)
所以没有办法在Firefox上翻译你的网站?我会尝试重新安装/升级你的Firefox版本