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