首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用React和i18next向路径添加区域设置?

如何使用React和i18next向路径添加区域设置?
EN

Stack Overflow用户
提问于 2022-04-04 07:41:05
回答 1查看 626关注 0票数 1

我正在使用React和i18next来尝试用多种语言构建一个应用程序。

我想在我的URL中生成Local,这个问题是前缀将被多次添加在URL中!

这是我的配置:

i18n.js

代码语言:javascript
复制
i18n
// i18next-http-backend
// loads translations from your server
// https://github.com/i18next/i18next-http-backend
.use(Backend)
// detect user language
// learn more: https://github.com/i18next/i18next-browser-languageDetector
.use(LanguageDetector)
// pass the i18n instance to react-i18next.
.use(initReactI18next)
// init i18next
// for all options read: https://www.i18next.com/overview/configuration-options
.init({
    debug: true,
    supportedLngs: ['de','en','fr'],
    fallbackLng: 'de',
    whitelist: ['de','en','fr'],
    detection: {
        order: ['path','cookie', 'htmlTag', 'localStorage', 'sessionStorage','subdomain'],
        caches: ['cookie'],
        lookupFromPathIndex: 0,
        checkWhitelist: true
    },
    interpolation: {
        escapeValue: false, // not needed for react as it escapes by default
        // format: (value, format, lng) => { // legacy usage
        //   if (value instanceof Date) {
        //     return DateTime.fromJSDate(value).setLocale(lng).toLocaleString(DateTime[format])
        //   }
        //   return value;
        // }
    },
    backend: {
        loadPath: '/locales/{{lng}}/translation.json',
    }
});

路由:

代码语言:javascript
复制
function App() {
const baseRouteUrl = "/:locale(en|de|fr)?";

return (
    //@todo add baseurl
    <I18nextProvider i18n={i18next}>
        <BrowserRouter >
            <Suspense fallback={<p>...Loading</p>}>
                <Switch>
                    <Route exact path={baseRouteUrl + "/"} component={Home} />
                    <Route path={baseRouteUrl + "/about"} component={About} />
                </Switch>
            </Suspense>
        </BrowserRouter>
    </I18nextProvider>

    );
  }

导航:

代码语言:javascript
复制
const Navigation = () => {
const baseUrl = cookies.get('i18next');
return (
    
        <Link to={baseUrl + "/"}> Home </Link>
        <br/>
        <Link to={baseUrl + "/about/"}>About </Link>
  
  );
};

网址是:

http://localhost:3000/en/about/

http://localhost:3000/en/de/about/

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2022-04-04 08:19:18

饼干的价值是什么?

如果您使用的是resolvedLanguage值,它会有帮助吗?

代码语言:javascript
复制
<Link to={i18n.resolvedLanguage + "/about/"}>About </Link>

顺便说一句:你可以删除白名单选项,把白名单重命名为supportedLngs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71733588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档