我在 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 显示英文版本。
您可以在这种情况下使用
localePrefix
属性:
export default createMiddleware({
locales: ['en', 'ar', 'es'],
defaultLocale: "en",
localPrefix: "as-needed",
});
可以是
'as-needed' | 'always' | 'never'
never
:切勿保留前缀。always
:始终添加前缀。as-needed
:仅当前缀不是默认本地时才保留前缀。