微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

react-admin 如何从 URL 中的路径获取和管理语言

如何解决react-admin 如何从 URL 中的路径获取和管理语言

react-admin 是多语言的,但是,你可以在 redux store 中选择和设置语言,它不是从 URL 路径中红色的,react-admin 中有一个高级功能,允许用户在本地存储中设置语言并制作它以某种方式永久存在,但有时您需要在 URL 中指定语言,以便用户在进入网站时不会被迫选择一种语言,如下所示:

www.testteeetweb.com/fa/posts 

有什么办法可以在 react-admin 中实现吗?

解决方法

不,react-admin 中没有这样的功能。

不过,您可以在 react-admin 应用程序之外实现它。使用 history 包,并监听位置变化。解析位置,查看URL的语言部分是否不同,然后更新本地状态下的语言。在 i18nProvider 默认语言中使用该状态。

类似于:

import React,{ useState,useEffect } from 'react';
import { Admin } from 'react-admin';
import history from 'history';
import polyglotI18nProvider from 'ra-i18n-polyglot';

const MyComponent= () => {
   const [language,setLanguage] = useState();
   const [i18nProvider,setI18nProvider] = useState();

   useEffect(() => {
        // see https://github.com/ReactTraining/history/blob/master/docs/api-reference.md#history.listen
        return history.listen(({ action,location }) => {
            const newLanguage = extractLanguageFromLocation(location.pathname);
            if (newLanguage !== language) {
                setLanguage(newLanguage)
            }
        })
    },[]);

    useEffect(() => {
        setI18nProvider(polyglotI18nProvider(locale => 
            locale === 'fr' ? frenchMessages : englishMessages,language
        ));
    },[language])

    return (
        <Admin i18nProvider={i18nProvider}>
            // ...
        </Admin>
    )
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。