8 internationalization reactjs next.js next-router
出于搜索引擎优化的目的,我需要将英语设置为默认语言 -> mynextapp.com/当用户进入网站时,他/她可以选择英语或法语,如果选择英语,则 url 将更改为mynextapp.com/en,如果选择法语 -> mynextapp.com/fr
目前我正在使用 Next - i18n 中的内置选项:
i18n: {
locales: ['en', 'fr'],
defaultLocale: 'en',
},
Run Code Online (Sandbox Code Playgroud)
但这允许我仅将英语作为默认路径= mynextapp.com/
语言切换器:
<Link
href="/"
locale={router.locale === 'en' ? 'fr' : 'en'}
>
<a>Switch</a>
</Link>
Run Code Online (Sandbox Code Playgroud)
有没有办法在不同的网址下处理相同的语言?这样,当您在语言切换器中单击“en”时,url 路径应该是 myapp.com/en。
要强制默认语言将区域设置添加到 URL,您可以将其直接传递给,并通过设置为href来选择退出自动处理区域设置前缀。localefalse
<Link href={`/${router.locale === 'en' ? 'fr' : 'en'}`} locale={false}>
<a>Switch</a>
</Link>
Run Code Online (Sandbox Code Playgroud)
如果您希望所有的Links 都以这种方式运行,并且还强制 URL 使用默认区域设置,则需要应用相同的逻辑。
假设您有该页面的链接/about,它将如下所示。
<Link href={`/${router.locale}/about`} locale={false}>
<a>About Page</a>
</Link>
Run Code Online (Sandbox Code Playgroud)
如果用来next/router做路由,也可以应用相同的逻辑。
router.push(`/${router.locale}/about`, undefined, { locale: false });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15796 次 |
| 最近记录: |