feat: add i18n dependency to website workspace

This commit is contained in:
JiPai
2024-09-05 19:59:05 +08:00
parent d88633f2c6
commit 9c36f30bb0
6 changed files with 120 additions and 8 deletions

View File

@@ -0,0 +1,12 @@
import { notFound } from 'next/navigation'
import { getRequestConfig } from 'next-intl/server'
import { routing } from './routing'
export default getRequestConfig(async ({ locale }) => {
// Validate that the incoming `locale` parameter is valid
if (!routing.locales.includes(locale as any)) notFound()
return {
messages: (await import(`../locales/${locale}.json`)).default,
}
})

View File

@@ -0,0 +1,16 @@
import { defineRouting } from 'next-intl/routing'
import { createSharedPathnamesNavigation } from 'next-intl/navigation'
export const routing = defineRouting({
// A list of all locales that are supported
locales: ['en', 'zh-Hans'],
// Used when no locale matches
defaultLocale: 'en',
localePrefix: 'as-needed',
})
// Lightweight wrappers around Next.js' navigation APIs
// that will consider the routing configuration
export const { Link, redirect, usePathname, useRouter } =
createSharedPathnamesNavigation(routing)

View File

@@ -0,0 +1,9 @@
import createMiddleware from 'next-intl/middleware';
import {routing} from './i18n/routing';
export default createMiddleware(routing);
export const config = {
// Match only internationalized pathnames
matcher: ['/', '/(zh-Hans|en)/:path*']
};

View File

@@ -1,11 +1,15 @@
const createNextIntlPlugin = require('next-intl/plugin')
const withNextIntl = createNextIntlPlugin()
/** @type {import('next').NextConfig} */
const nextConfig = {
eslint: {
ignoreDuringBuilds: true,
},
typescript: {
ignoreBuildErrors: true,
},
};
eslint: {
ignoreDuringBuilds: true,
},
typescript: {
ignoreBuildErrors: true,
},
}
module.exports = nextConfig;
module.exports = withNextIntl(nextConfig)

View File

@@ -24,6 +24,7 @@
"framer-motion": "^11.0.24",
"lucide-react": "0.364.0",
"next": "14.2.2",
"next-intl": "^3.19.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-ga4": "^2.1.0",