diff --git a/.env.example b/.env.example index b69c8b8..e2c860e 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,6 @@ NezhaBaseUrl=http://124.XX.XX.XX:8008 NezhaAuth=your-nezha-api-token +DefaultLocale=zh NEXT_PUBLIC_NezhaFetchInterval=5000 NEXT_PUBLIC_ShowFlag=true NEXT_PUBLIC_DisableCartoon=true \ No newline at end of file diff --git a/README.md b/README.md index bf886ce..2291b6d 100644 --- a/README.md +++ b/README.md @@ -12,14 +12,14 @@ #### 环境变量 -| 变量名 | 含义 | 示例 | -| ------------------------------ | -------------------- | -------------------------------- | -| NezhaBaseUrl | nezha 面板地址 | http://120.x.x.x:8008 | -| NezhaAuth | nezha 面板 API Token | 5hAY3QX6Nl9B3Uxxxx26KMvOMyXS1Udi | -| ServerDisablePrefetch | 是否禁用预加载 | **默认**:false | -| NEXT_PUBLIC_NezhaFetchInterval | 获取数据间隔(毫秒) | **默认**:2000 | -| NEXT_PUBLIC_ShowFlag | 是否显示旗帜 | **默认**:false | -| NEXT_PUBLIC_DisableCartoon | 是否禁用卡通人物 | **默认**:false | +| 变量名 | 含义 | 示例 | +| ------------------------------ | -------------------------------- | -------------------------------- | +| NezhaBaseUrl | nezha 面板地址 | http://120.x.x.x:8008 | +| NezhaAuth | nezha 面板 API Token | 5hAY3QX6Nl9B3Uxxxx26KMvOMyXS1Udi | +| DefaultLocale | 面板默认显示语言(代码参考下表) | **默认**:en | +| NEXT_PUBLIC_NezhaFetchInterval | 获取数据间隔(毫秒) | **默认**:2000 | +| NEXT_PUBLIC_ShowFlag | 是否显示旗帜 | **默认**:false | +| NEXT_PUBLIC_DisableCartoon | 是否禁用卡通人物 | **默认**:false | #### 多语言支持 diff --git a/app/[locale]/(main)/ClientComponents/ServerListClient.tsx b/app/[locale]/(main)/ClientComponents/ServerListClient.tsx index f064a1a..ab96e56 100644 --- a/app/[locale]/(main)/ClientComponents/ServerListClient.tsx +++ b/app/[locale]/(main)/ClientComponents/ServerListClient.tsx @@ -14,11 +14,13 @@ export default function ServerListClient() {

{error.message}

- Please check your environment variables and review the server console logs for more details. + Please check your environment variables and review the server console + logs for more details.

); if (!data) return null; + const { result } = data; const positiveDisplayIndex = result @@ -38,6 +40,7 @@ export default function ServerListClient() { ...noDisplayIndex, ...negativeDisplayIndex, ]; + return (
{sortedServers.map((serverInfo) => ( diff --git a/docker/.env.example b/docker/.env.example index b69c8b8..e2c860e 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -1,5 +1,6 @@ NezhaBaseUrl=http://124.XX.XX.XX:8008 NezhaAuth=your-nezha-api-token +DefaultLocale=zh NEXT_PUBLIC_NezhaFetchInterval=5000 NEXT_PUBLIC_ShowFlag=true NEXT_PUBLIC_DisableCartoon=true \ No newline at end of file diff --git a/i18n-metadata.ts b/i18n-metadata.ts index acf3a7c..3151be8 100644 --- a/i18n-metadata.ts +++ b/i18n-metadata.ts @@ -1,5 +1,7 @@ // @auto-i18n-check. Please do not delete the line. +import getEnv from "./lib/env-entry"; + export const localeItems = [ { code: "en", name: "English" }, { code: "ja", name: "日本語" }, @@ -21,4 +23,4 @@ export const localeItems = [ ]; export const locales = localeItems.map((item) => item.code); -export const defaultLocale = "en"; +export const defaultLocale = getEnv("DefaultLocale") || "en"; diff --git a/lib/serverFetch.tsx b/lib/serverFetch.tsx index 15d16f1..d8fa983 100644 --- a/lib/serverFetch.tsx +++ b/lib/serverFetch.tsx @@ -10,8 +10,8 @@ export async function GetNezhaData() { var nezhaBaseUrl = getEnv("NezhaBaseUrl"); if (!nezhaBaseUrl) { - console.error("NezhaBaseUrl is not set"); - throw new Error("NezhaBaseUrl is not set"); + console.log("NezhaBaseUrl is not set"); + return { error: "NezhaBaseUrl is not set" }; } // Remove trailing slash @@ -27,7 +27,12 @@ export async function GetNezhaData() { revalidate: 0, }, }); - const nezhaData = (await response.json()).result as NezhaAPI[]; + const resData = await response.json(); + const nezhaData = resData.result as NezhaAPI[]; + if (!nezhaData) { + console.log(resData); + return { error: "NezhaData fetch failed" }; + } const data: ServerApi = { live_servers: 0, offline_servers: 0, diff --git a/middleware.ts b/middleware.ts index a4b787c..ebcec7e 100644 --- a/middleware.ts +++ b/middleware.ts @@ -1,14 +1,14 @@ // @auto-i18n-check. Please do not delete the line. import createMiddleware from "next-intl/middleware"; -import { locales } from "./i18n-metadata"; +import { defaultLocale, locales } from "./i18n-metadata"; export default createMiddleware({ // A list of all locales that are supported locales: locales, // Used when no locale matches - defaultLocale: "en", + defaultLocale: defaultLocale, // 'always': This is the default, The home page will also be redirected to the default language, such as www.abc.com to www.abc.com/en // 'as-needed': The default page is not redirected. For example, if you open www.abc.com, it is still www.abc.com