Next.js/ next-intl 默认区域设置配置重定向到 /en,尽管“en”作为默认区域设置

问题描述 投票:0回答:1

我在 Next.js 应用程序中遇到一个问题, 尽管在 middleware.js 中将默认区域设置配置为“en”, 当我访问根 URL (localhost:3000) 时,应用程序仍然重定向到“/en”。

import createMiddleware from 'next-intl/middleware';

export default createMiddleware( {
  // A list of all locales that are supported
  locales: [ 'en', 'ar', 'es' ],

  // If this locale is matched, pathnames work without a prefix (e.g. `/about`)
  defaultLocale: 'en',
  localeDetection: false,
} );

export const config = {
  // Skip all paths that should not be internationalized. This example skips the
  // folders "api", "_next" and all files with an extension (e.g. favicon.ico)
  matcher: [ '/((?!api|_next|.*\\..*).*)' ]
};

预期行为: 我希望应用程序在根 URL ('/') 处显示英文版本,因为 'en' 被设置为默认区域设置。

实际行为: 应用程序重定向到“/en”,而不是在 localhost:3000 显示英文版本。

next.js i18next next-intl
1个回答
0
投票

您可以在这种情况下使用

localePrefix
属性:

export default createMiddleware({
  locales: ['en', 'ar', 'es'],
  defaultLocale: "en",
  localPrefix: "as-needed",
});

可以是

'as-needed' | 'always' | 'never'

  • never
    :切勿保留前缀。
  • always
    :始终添加前缀。
  • as-needed
    :仅当前缀不是默认本地时才保留前缀。
© www.soinside.com 2019 - 2024. All rights reserved.