Merge pull request #10 from snowykami/fix/5-error-site-language

fix: Closes #5 修复首选语言检测错误的问题
This commit is contained in:
2025-09-12 13:24:16 +08:00
committed by GitHub
3 changed files with 8 additions and 6 deletions

View File

@ -4,7 +4,7 @@ import "./globals.css";
import { DeviceProvider } from "@/contexts/device-context";
import { NextIntlClientProvider } from 'next-intl';
import config from "@/config";
import { getUserLocales } from "@/i18n/request";
import { getUserLocales, getFirstLocale } from '@/i18n/request';
import { Toaster } from "@/components/ui/sonner"
const geistSans = Geist({
@ -28,7 +28,7 @@ export default async function RootLayout({
children: React.ReactNode;
}>) {
return (
<html lang={(await getUserLocales())[0] || "en"} className="h-full">
<html lang={await getFirstLocale() || "en"} className="h-full">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>

View File

@ -35,7 +35,6 @@ export function CommentItem(
}
) {
const locale = useLocale();
console.log("locale", locale);
const t = useTranslations("Comment");
const commonT = useTranslations("Common");
const clickToUserProfile = useToUserProfile();

View File

@ -10,7 +10,6 @@ export default getRequestConfig(async () => {
try {
return (await import(`@/locales/${locale}.json`)).default;
} catch (err) {
console.debug(`Failed to load locale ${locale}:`);
return {};
}
})
@ -30,8 +29,7 @@ export async function getUserLocales(): Promise<string[]> {
const user = (await getLoginUser(token)).data;
locales.push(user.language);
locales.push(user.language.split('-')[0]);
} catch (error) {
console.info("获取用户信息失败,使用默认语言", error);
} catch {
}
const languageInCookie = cookieStore.get('language')?.value;
if (languageInCookie) {
@ -45,4 +43,9 @@ export async function getUserLocales(): Promise<string[]> {
locales = [...new Set([...locales, ...languages, ...languagesWithoutRegion])];
}
return locales.reverse();
}
export async function getFirstLocale(): Promise<string> {
const locales = await getUserLocales();
return locales.reverse()[0] || 'en';
}