From 9d02f35522c8cc39bc80575ccc16c0467d5e0f6f Mon Sep 17 00:00:00 2001
From: hamster1963 <1410514192@qq.com>
Date: Sun, 29 Sep 2024 11:28:01 +0800
Subject: [PATCH] feat: add DefaultLocale config

---
 .env.example        |  1 +
 README.md           | 15 ++++++++-------
 docker/.env.example |  1 +
 i18n-metadata.ts    |  4 +++-
 middleware.ts       |  4 ++--
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/.env.example b/.env.example
index b69c8b82e..e2c860e04 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 72059bc6c..2291b6d9f 100644
--- a/README.md
+++ b/README.md
@@ -12,13 +12,14 @@
 
 #### 环境变量
 
-| 变量名                         | 含义                 | 示例                             |
-| ------------------------------ | -------------------- | -------------------------------- |
-| NezhaBaseUrl                   | nezha 面板地址       | http://120.x.x.x:8008            |
-| NezhaAuth                      | nezha 面板 API Token | 5hAY3QX6Nl9B3Uxxxx26KMvOMyXS1Udi |
-| 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/docker/.env.example b/docker/.env.example
index b69c8b82e..e2c860e04 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 acf3a7cdd..3151be8b0 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/middleware.ts b/middleware.ts
index a4b787c72..ebcec7e1e 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