'多语言'
This commit is contained in:
22
app/lib/locale-link.tsx
Normal file
22
app/lib/locale-link.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
"use client";
|
||||
|
||||
import NextLink from "next/link";
|
||||
import { usePathname as useNextPathname } from "next/navigation";
|
||||
import { useLocale } from "../context/LocaleContext";
|
||||
|
||||
type LocaleLinkProps = React.ComponentProps<typeof NextLink>;
|
||||
|
||||
export function LocaleLink({ href, ...props }: LocaleLinkProps) {
|
||||
const locale = useLocale();
|
||||
const hrefStr = typeof href === "string" ? href : href.pathname ?? "/";
|
||||
const localeHref = hrefStr.startsWith("/")
|
||||
? `/${locale}${hrefStr === "/" ? "" : hrefStr}`
|
||||
: hrefStr;
|
||||
return <NextLink href={localeHref} {...props} />;
|
||||
}
|
||||
|
||||
export function usePathname() {
|
||||
const path = useNextPathname();
|
||||
const match = path?.match(/^\/(zh|en)(\/.*)?$/);
|
||||
return match ? (match[2] ?? "/") : path ?? "/";
|
||||
}
|
||||
Reference in New Issue
Block a user