小编spe*_*exi的帖子

在 React-Admin v3 中设置页面加载的语言环境

我一直在使用 React-Admin v2,现在是时候升级到下一个主要版本了。我的应用程序具有在页面加载时更改登录页面语言的功能,例如根据网址参数。如果没有设置任何参数,则语言将为英语,但如果 URL 为 myproject.tld/login/fi,则语言将为芬兰语。通过使用动作创建者componentDidMount分派动作来更改语言。CHANGE_LOCALEchangeLocale

但是,我已阅读升级指南,它说翻译系统将不再以相同的方式工作,它不再使用 redux。我已经能够熟悉新系统,并且我设法创建了语言更改按钮,并且它起作用了。创建语言环境切换器函数并useSetLocale在其中使用钩子很容易。

但是,我仍然遇到这样的情况:必须在没有任何用户操作(即单击按钮)的情况下即时更改语言。如果我无法根据用户点击并登陆网站的链接翻译登录页面,我可以接受这个事实。默认是英语,如果用户想查看其他语言的登录表单,我可以在右上角创建语言链接。

更重要的还是在用户登录后更改UI语言。每个用户都将他们选择的语言保存到后端的用户对象中,成功登录后我的 React 应用程序就知道语言代码。

主要问题:如何在登录后并且加载所有内容后更改语言?如果我理解正确,则钩子不能在componentDidMount. 我目前知道的更改语言的方法是 1. 挂钩useSetLocale和 2. 在文件中初始化它,App.js如下所示:

import * as React from "react";
import { Admin, Resource } from 'react-admin';
import polyglotI18nProvider from 'ra-i18n-polyglot';
import jsonServerProvider from 'ra-data-json-server';
import UserList from './users';
import englishMessages from 'ra-language-english';
import finnishMessages from 'ra-language-finnish';

const messages = {
    fi: finnishMessages,
    en: englishMessages,
};

const dataProvider = jsonServerProvider('https://jsonplaceholder.typicode.com');
const i18nProvider …
Run Code Online (Sandbox Code Playgroud)

locale translation react-admin

3
推荐指数
1
解决办法
1374
查看次数

标签 统计

locale ×1

react-admin ×1

translation ×1