reactjs - 使用 React、React Redux 或 React Context 和 Material UI 的多语言应用程序的架构示例

标签 reactjs react-redux internationalization material-ui material-design

我正在使用 React 和 Material UI 开发应用程序。应用程序需要根据语言环境值翻译用户界面。我需要提供 5 种语言的设施。我想达到类似 Material UI documentation page 的响应水平.

I noticed that for the base language, which is English, the routes do not include a language segment on the URL path, but when a language other than English is selected, the URL has a language segment.例如,英文的本地化页面 URL 是 https://material-ui.com/guides/localization/法语的同一页是https://material-ui.com/fr/guides/localization/ .

任何对架构模式或示例代码的引用都将不胜感激。

最佳答案

它有什么好处

  • 以后如果你需要更改路径名,你可以只更改 PATHS
  • 您可以在配置文件 genericRoutes 中添加该组件
  • 对于本地化 path={`/:language?/${path}`} 你可以这样使用。
import { Route } from 'react-router-dom';

const PATHS = {
    SIGN_UP: '/sign-up',
    CONFIRMATION: '/confirmation'
}

const genericRoutes = [
    {
      path: PATHS.SIGN_UP,
      component: SignUp,
    },
    {
      path: PATHS.CONFIRMATION,
      component: Confirmation,
    },
]

const GenericRoute = (props) => <Route {...props} />;

const Routes = () => {
    return (
        <Switch>
            {genericRoutes.map(({ path, component, exact = true }, key) => (
                <GenericRoute
                key={key}
                exact={exact}
                path={`/:language?/${path}`}
                component={component}
                />
            ))}
        </Switch>
    )
}


关于reactjs - 使用 React、React Redux 或 React Context 和 Material UI 的多语言应用程序的架构示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62256670/

相关文章:

reactjs - react 表中的冒泡选择

reactjs - 运行命令 npm start 后,如何在开发模式下的特定路线上启动 React 应用程序,而不是从主路线启动

reactjs - react : How to change status of toggle switch inside map?

ReactJS:仅渲染子组件

reactjs - 如何获取当前导航状态

grails - 类型与 I18N 标签而不是属性名称不匹配

javascript - React如何获取父组件的属性

javascript - 如何同时使用 stacknavigator 和 tabnavigator?

django - 从 get_current_language 获取两个字母的语言代码

django - django为什么不考虑我的语言文件?