mirror of
https://github.com/lukevella/rallly.git
synced 2025-06-07 13:11:49 +02:00
Fix languages issues
This commit is contained in:
parent
88d255da1b
commit
403b2aa1b0
7 changed files with 34 additions and 8 deletions
|
@ -19,7 +19,10 @@ export async function middleware(request: NextRequest) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const locale = getPreferredLocale(request);
|
const locale = getPreferredLocale({
|
||||||
|
acceptLanguageHeader: request.headers.get("accept-language") ?? undefined,
|
||||||
|
});
|
||||||
|
|
||||||
request.nextUrl.pathname = `/${locale}${pathname}`;
|
request.nextUrl.pathname = `/${locale}${pathname}`;
|
||||||
|
|
||||||
if (locale === "en") {
|
if (locale === "en") {
|
||||||
|
|
|
@ -19,7 +19,12 @@ export const middleware = withAuth(async (req) => {
|
||||||
return NextResponse.redirect(newUrl);
|
return NextResponse.redirect(newUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
const locale = req.auth?.user?.locale || getPreferredLocale(req);
|
const locale =
|
||||||
|
req.auth?.user?.locale ||
|
||||||
|
getPreferredLocale({
|
||||||
|
acceptLanguageHeader: req.headers.get("accept-language") ?? undefined,
|
||||||
|
});
|
||||||
|
|
||||||
if (supportedLocales.includes(locale)) {
|
if (supportedLocales.includes(locale)) {
|
||||||
newUrl.pathname = `/${locale}${pathname}`;
|
newUrl.pathname = `/${locale}${pathname}`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
"stripe": "^13.2.0"
|
"stripe": "^13.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rallly/eslint-config": "workspace:*"
|
"@rallly/eslint-config": "workspace:*",
|
||||||
|
"@rallly/tsconfig": "workspace:*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"negotiator": "^1.0.0"
|
"negotiator": "^1.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@rallly/tsconfig": "workspace:*",
|
||||||
"@types/negotiator": "^0.6.3"
|
"@types/negotiator": "^0.6.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,21 @@
|
||||||
import languages, { defaultLocale } from "./index";
|
import languages, { defaultLocale } from "./index";
|
||||||
import Negotiator from "negotiator";
|
import Negotiator from "negotiator";
|
||||||
import { match } from "@formatjs/intl-localematcher";
|
import { match } from "@formatjs/intl-localematcher";
|
||||||
import type { NextRequest } from "next/server";
|
|
||||||
|
|
||||||
const locales = Object.keys(languages);
|
const locales = Object.keys(languages);
|
||||||
|
|
||||||
export function getPreferredLocale(req: NextRequest) {
|
export function getPreferredLocale({
|
||||||
|
acceptLanguageHeader,
|
||||||
|
}: {
|
||||||
|
acceptLanguageHeader?: string;
|
||||||
|
}) {
|
||||||
|
if (!acceptLanguageHeader) {
|
||||||
|
return defaultLocale;
|
||||||
|
}
|
||||||
|
|
||||||
const preferredLanguages = new Negotiator({
|
const preferredLanguages = new Negotiator({
|
||||||
headers: {
|
headers: {
|
||||||
"accept-language": req.headers.get("accept-language") ?? "",
|
"accept-language": acceptLanguageHeader,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.languages()
|
.languages()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"extends": "@rallly/tsconfig/react.json",
|
"extends": "@rallly/tsconfig/node.json",
|
||||||
"include": ["**/*.ts"],
|
"include": ["src/**/*.ts"],
|
||||||
"exclude": ["node_modules"]
|
"exclude": ["node_modules"]
|
||||||
}
|
}
|
||||||
|
|
9
pnpm-lock.yaml
generated
9
pnpm-lock.yaml
generated
|
@ -219,6 +219,9 @@ importers:
|
||||||
'@rallly/ui':
|
'@rallly/ui':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/ui
|
version: link:../../packages/ui
|
||||||
|
'@rallly/utils':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/utils
|
||||||
'@sentry/nextjs':
|
'@sentry/nextjs':
|
||||||
specifier: ^8.49.0
|
specifier: ^8.49.0
|
||||||
version: 8.55.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@14.2.28(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.99.7(esbuild@0.25.3))
|
version: 8.55.0(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(next@14.2.28(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.52.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(webpack@5.99.7(esbuild@0.25.3))
|
||||||
|
@ -428,6 +431,9 @@ importers:
|
||||||
'@rallly/eslint-config':
|
'@rallly/eslint-config':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../eslint-config
|
version: link:../eslint-config
|
||||||
|
'@rallly/tsconfig':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../tsconfig
|
||||||
|
|
||||||
packages/database:
|
packages/database:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -557,6 +563,9 @@ importers:
|
||||||
specifier: ^1.0.0
|
specifier: ^1.0.0
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@rallly/tsconfig':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../tsconfig
|
||||||
'@types/negotiator':
|
'@types/negotiator':
|
||||||
specifier: ^0.6.3
|
specifier: ^0.6.3
|
||||||
version: 0.6.3
|
version: 0.6.3
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue