首次访问时禁用 next-intl 中的自动区域设置检测

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

我将 next-intl 与 nextjs 应用程序目录一起使用,如其文档中所示https://next-intl-docs.vercel.app/docs/routing/middleware#disable-automatic-locale-detection

import createMiddleware from 'next-intl/middleware';
 
export default createMiddleware({
  // ... other config
 
  localeDetection: false
});

它禁用来自

accept-language
标头和 cookie 的区域设置检测。我想要的是仅从
accept-language
标头禁用区域设置检测,但使用 cookie 值(如果存在)。

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

我在

next-intl
库中也遇到了类似的问题。

这是我的要求:

  1. 使用 cookie 值进行区域设置检测。
  2. 忽略覆盖我的 defaultLocale 设置的
    accept-language
    标头。

请在

middleware.ts
中尝试以下代码:

export default async function middleware(request: NextRequest) {
    const defaultLocale = 'de';

    const handleI18nRouting = createIntlMiddleware({
        locales: ['en', 'de'],
        defaultLocale
    });

    // accept-lanuage will override the defaultLocale, so remove it.
    request.headers.set('accept-language', "");
    const response = handleI18nRouting(request);

    return response;
}

我的

next-intl
版本:“^3.4.5”,

© www.soinside.com 2019 - 2024. All rights reserved.