From 01f1646fe912a7c4310b1d09806e897685e8274e Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Thu, 26 Sep 2024 10:23:56 +0800 Subject: [PATCH] feat: add i18n support --- .../ClientComponents/ServerListClient.tsx | 32 ----- .../ClientComponents/ServerOverviewClient.tsx | 111 ------------------ app/(main)/footer.tsx | 22 ---- app/(main)/layout.tsx | 20 ---- app/(main)/page.tsx | 29 ----- .../ClientComponents/ServerListClient.tsx | 27 +++++ .../ClientComponents/ServerOverviewClient.tsx | 86 ++++++++++++++ app/[locale]/(main)/footer.tsx | 14 +++ app/{ => [locale]}/(main)/header.tsx | 59 +++------- app/[locale]/(main)/layout.tsx | 18 +++ app/[locale]/(main)/page.tsx | 20 ++++ app/{ => [locale]}/android-chrome-192x192.png | Bin app/{ => [locale]}/android-chrome-512x512.png | Bin app/{ => [locale]}/apple-touch-icon.png | Bin app/{ => [locale]}/favicon-16x16.png | Bin app/{ => [locale]}/favicon-32x32.png | Bin app/[locale]/layout.tsx | 22 ++++ app/[locale]/not-found.tsx | 16 +++ app/{ => [locale]}/types/nezha-api.ts | 0 app/{ => [locale]}/types/utils.ts | 0 app/not-found.tsx | 27 ----- auto-i18n-config.json | 15 +++ bun.lockb | Bin 420797 -> 424810 bytes components/ServerCard.tsx | 2 +- components/ServerCardPopover.tsx | 2 +- components/ServerList.tsx | 2 +- components/ServerOverview.tsx | 2 +- i18n-metadata.ts | 24 ++++ i18n.ts | 14 +++ lib/serverFetch.tsx | 4 +- lib/utils.ts | 2 +- messages/en.json | 26 ++++ messages/ja.json | 26 ++++ messages/zh-t.json | 26 ++++ messages/zh.json | 26 ++++ middleware.ts | 21 ++++ next.config.mjs | 14 +-- package.json | 5 +- 38 files changed, 416 insertions(+), 298 deletions(-) delete mode 100644 app/(main)/ClientComponents/ServerListClient.tsx delete mode 100644 app/(main)/ClientComponents/ServerOverviewClient.tsx delete mode 100644 app/(main)/footer.tsx delete mode 100644 app/(main)/layout.tsx delete mode 100644 app/(main)/page.tsx create mode 100644 app/[locale]/(main)/ClientComponents/ServerListClient.tsx create mode 100644 app/[locale]/(main)/ClientComponents/ServerOverviewClient.tsx create mode 100644 app/[locale]/(main)/footer.tsx rename app/{ => [locale]}/(main)/header.tsx (53%) create mode 100644 app/[locale]/(main)/layout.tsx create mode 100644 app/[locale]/(main)/page.tsx rename app/{ => [locale]}/android-chrome-192x192.png (100%) rename app/{ => [locale]}/android-chrome-512x512.png (100%) rename app/{ => [locale]}/apple-touch-icon.png (100%) rename app/{ => [locale]}/favicon-16x16.png (100%) rename app/{ => [locale]}/favicon-32x32.png (100%) create mode 100644 app/[locale]/layout.tsx create mode 100644 app/[locale]/not-found.tsx rename app/{ => [locale]}/types/nezha-api.ts (100%) rename app/{ => [locale]}/types/utils.ts (100%) delete mode 100644 app/not-found.tsx create mode 100644 auto-i18n-config.json create mode 100644 i18n-metadata.ts create mode 100644 i18n.ts create mode 100644 messages/en.json create mode 100644 messages/ja.json create mode 100644 messages/zh-t.json create mode 100644 messages/zh.json create mode 100644 middleware.ts diff --git a/app/(main)/ClientComponents/ServerListClient.tsx b/app/(main)/ClientComponents/ServerListClient.tsx deleted file mode 100644 index cc82121..0000000 --- a/app/(main)/ClientComponents/ServerListClient.tsx +++ /dev/null @@ -1,32 +0,0 @@ -"use client"; - -import { ServerApi } from "@/app/types/nezha-api"; -import ServerCard from "@/components/ServerCard"; -import { nezhaFetcher } from "@/lib/utils"; -import useSWR from "swr"; -import getEnv from "@/lib/env-entry"; - -export default function ServerListClient() { - const { data } = useSWR("/api/server", nezhaFetcher, { - refreshInterval: Number(getEnv("NEXT_PUBLIC_NezhaFetchInterval")) || 2000, - }); - - if (!data) return null; - - const sortedServers = data.result.sort((a, b) => { - if (a.display_index && b.display_index) { - return b.display_index - a.display_index; - } - if (a.display_index) return -1; - if (b.display_index) return 1; - return a.id - b.id; - }); - - return ( -
- {sortedServers.map((serverInfo) => ( - - ))} -
- ); -} diff --git a/app/(main)/ClientComponents/ServerOverviewClient.tsx b/app/(main)/ClientComponents/ServerOverviewClient.tsx deleted file mode 100644 index 1450765..0000000 --- a/app/(main)/ClientComponents/ServerOverviewClient.tsx +++ /dev/null @@ -1,111 +0,0 @@ -"use client"; - -import { Card, CardContent } from "@/components/ui/card"; -import blogMan from "@/public/blog-man.webp"; -import Image from "next/image"; -import useSWR from "swr"; -import { formatBytes, nezhaFetcher } from "@/lib/utils"; -import { Loader } from "@/components/loading/Loader"; -import { ServerApi } from "@/app/types/nezha-api"; -import getEnv from "@/lib/env-entry"; - -export default function ServerOverviewClient() { - const { data } = useSWR("/api/server", nezhaFetcher); - - const disableCartoon = getEnv("NEXT_PUBLIC_DisableCartoon") === "true"; - - return ( -
- - -
-

Total servers

-
- - - - {data ? ( -
- {data?.result.length} -
- ) : ( -
- -
- )} -
-
-
-
- - -
-

Online servers

-
- - - - - {data ? ( -
- {data?.live_servers} -
- ) : ( -
- -
- )} -
-
-
-
- - -
-

Offline servers

-
- - - - - {data ? ( -
- {data?.offline_servers} -
- ) : ( -
- -
- )} -
-
-
-
- - -
-

Total bandwidth

- {data ? ( -

- {formatBytes(data?.total_bandwidth)} -

- ) : ( -
- -
- )} -
- {!disableCartoon && ( - {"Hamster1963"} - )} -
-
-
- ); -} diff --git a/app/(main)/footer.tsx b/app/(main)/footer.tsx deleted file mode 100644 index 5f8a5e3..0000000 --- a/app/(main)/footer.tsx +++ /dev/null @@ -1,22 +0,0 @@ -export default function Footer() { - return ( - - ); -} diff --git a/app/(main)/layout.tsx b/app/(main)/layout.tsx deleted file mode 100644 index 6a77ce3..0000000 --- a/app/(main)/layout.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -import Header from "@/app/(main)/header"; -import Footer from "./footer"; - -type DashboardProps = { - children: React.ReactNode; -}; - -export default function MainLayout({ children }: DashboardProps) { - return ( -
-
-
- {children} -
-
-
- ); -} diff --git a/app/(main)/page.tsx b/app/(main)/page.tsx deleted file mode 100644 index 86719a1..0000000 --- a/app/(main)/page.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import ServerList from "@/components/ServerList"; -import ServerOverview from "@/components/ServerOverview"; -import getEnv from "@/lib/env-entry"; -import { GetNezhaData } from "@/lib/serverFetch"; - -import { SWRConfig } from "swr"; - -const disablePrefetch = getEnv("ServerDisablePrefetch") === "true"; - -const fallback = disablePrefetch - ? {} - : { - "/api/server": GetNezhaData(), - }; - -export default function Home() { - return ( - -
- - -
-
- ); -} diff --git a/app/[locale]/(main)/ClientComponents/ServerListClient.tsx b/app/[locale]/(main)/ClientComponents/ServerListClient.tsx new file mode 100644 index 0000000..c01f1b9 --- /dev/null +++ b/app/[locale]/(main)/ClientComponents/ServerListClient.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { useTranslations } from 'next-intl'; +import { ServerApi } from "../../types/nezha-api"; +import ServerCard from "../../../../components/ServerCard"; +import { nezhaFetcher } from "../../../../lib/utils"; +import useSWR from "swr"; +import getEnv from "../../../../lib/env-entry"; +export default function ServerListClient() { + const { + data + } = useSWR("/api/server", nezhaFetcher, { + refreshInterval: Number(getEnv("NEXT_PUBLIC_NezhaFetchInterval")) || 2000 + }); + if (!data) return null; + const sortedServers = data.result.sort((a, b) => { + if (a.display_index && b.display_index) { + return b.display_index - a.display_index; + } + if (a.display_index) return -1; + if (b.display_index) return 1; + return a.id - b.id; + }); + return
+ {sortedServers.map(serverInfo => )} +
; +} \ No newline at end of file diff --git a/app/[locale]/(main)/ClientComponents/ServerOverviewClient.tsx b/app/[locale]/(main)/ClientComponents/ServerOverviewClient.tsx new file mode 100644 index 0000000..4b4fdeb --- /dev/null +++ b/app/[locale]/(main)/ClientComponents/ServerOverviewClient.tsx @@ -0,0 +1,86 @@ +"use client"; + +import { useTranslations } from 'next-intl'; +import { Card, CardContent } from "../../../../components/ui/card"; +import blogMan from "../../../../public/blog-man.webp"; +import Image from "next/image"; +import useSWR from "swr"; +import { formatBytes, nezhaFetcher } from "../../../../lib/utils"; +import { Loader } from "../../../../components/loading/Loader"; +import { ServerApi } from "../../types/nezha-api"; +import getEnv from "../../../../lib/env-entry"; +export default function ServerOverviewClient() { + const t = useTranslations("ServerOverviewClient"); + const { + data + } = useSWR("/api/server", nezhaFetcher); + const disableCartoon = getEnv("NEXT_PUBLIC_DisableCartoon") === "true"; + return
+ + +
+

{t('p_816-881_Totalservers')}

+
+ + + + {data ?
+ {data?.result.length} +
:
+ +
} +
+
+
+
+ + +
+

{t('p_1610-1676_Onlineservers')}

+
+ + + + + {data ?
+ {data?.live_servers} +
:
+ +
} +
+
+
+
+ + +
+

{t('p_2532-2599_Offlineservers')}

+
+ + + + + {data ?
+ {data?.offline_servers} +
:
+ +
} +
+
+
+
+ + +
+

{t('p_3463-3530_Totalbandwidth')}

+ {data ?

+ {formatBytes(data?.total_bandwidth)} +

:
+ +
} +
+ {!disableCartoon && {"Hamster1963"}} +
+
+
; +} \ No newline at end of file diff --git a/app/[locale]/(main)/footer.tsx b/app/[locale]/(main)/footer.tsx new file mode 100644 index 0000000..920c271 --- /dev/null +++ b/app/[locale]/(main)/footer.tsx @@ -0,0 +1,14 @@ +import { useTranslations } from 'next-intl'; +export default function Footer() { + const t = useTranslations("Footer"); + return ; +} \ No newline at end of file diff --git a/app/(main)/header.tsx b/app/[locale]/(main)/header.tsx similarity index 53% rename from app/(main)/header.tsx rename to app/[locale]/(main)/header.tsx index 9be6e09..fcb3ac8 100644 --- a/app/(main)/header.tsx +++ b/app/[locale]/(main)/header.tsx @@ -1,86 +1,61 @@ "use client"; +import { useTranslations } from 'next-intl'; import React, { useEffect, useRef, useState } from "react"; import Image from "next/image"; -import { Separator } from "@/components/ui/separator"; +import { Separator } from "../../../components/ui/separator"; import { DateTime } from "luxon"; -import { ModeToggle } from "@/components/ThemeSwitcher"; - +import { ModeToggle } from "../../../components/ThemeSwitcher"; function Header() { - return ( -
+ const t = useTranslations("Header"); + return
- apple-touch-icon + apple-touch-icon
NezhaDash - -

- Simple and beautiful dashboard -

+ +

{t('p_1079-1199_Simpleandbeautifuldashbo')}

-
- ); +
; } // https://github.com/streamich/react-use/blob/master/src/useInterval.ts const useInterval = (callback: Function, delay?: number | null) => { const savedCallback = useRef(() => {}); - useEffect(() => { savedCallback.current = callback; }); - useEffect(() => { if (delay !== null) { const interval = setInterval(() => savedCallback.current(), delay || 0); return () => clearInterval(interval); } - return undefined; }, [delay]); }; - function Overview() { + const t = useTranslations("Overview"); const [mouted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); const timeOption = DateTime.TIME_SIMPLE; timeOption.hour12 = true; - const [timeString, setTimeString] = useState( - DateTime.now().setLocale("en-US").toLocaleString(timeOption), - ); - + const [timeString, setTimeString] = useState(DateTime.now().setLocale("en-US").toLocaleString(timeOption)); useInterval(() => { setTimeString(DateTime.now().setLocale("en-US").toLocaleString(timeOption)); }, 1000); - - return ( -
-

👋 Overview

+ return
+

{t('p_2277-2331_Overview')}

-

where the time is

- {mouted && ( -

{timeString}

- )} +

{t('p_2390-2457_wherethetimeis')}

+ {mouted &&

{timeString}

}
-
- ); +
; } - -export default Header; +export default Header; \ No newline at end of file diff --git a/app/[locale]/(main)/layout.tsx b/app/[locale]/(main)/layout.tsx new file mode 100644 index 0000000..bbaa151 --- /dev/null +++ b/app/[locale]/(main)/layout.tsx @@ -0,0 +1,18 @@ +import { useTranslations } from 'next-intl'; +import React from "react"; +import Header from "@/app/[locale]/(main)/header"; +import Footer from "./footer"; +type DashboardProps = { + children: React.ReactNode; +}; +export default function MainLayout({ + children +}: DashboardProps) { + return
+
+
+ {children} +
+
+
; +} \ No newline at end of file diff --git a/app/[locale]/(main)/page.tsx b/app/[locale]/(main)/page.tsx new file mode 100644 index 0000000..b3a0b2c --- /dev/null +++ b/app/[locale]/(main)/page.tsx @@ -0,0 +1,20 @@ +import { useTranslations } from 'next-intl'; +import ServerList from "../../../components/ServerList"; +import ServerOverview from "../../../components/ServerOverview"; +import getEnv from "../../../lib/env-entry"; +import { GetNezhaData } from "../../../lib/serverFetch"; +import { SWRConfig } from "swr"; +const disablePrefetch = getEnv("ServerDisablePrefetch") === "true"; +const fallback = disablePrefetch ? {} : { + "/api/server": GetNezhaData() +}; +export default function Home() { + return +
+ + +
+
; +} \ No newline at end of file diff --git a/app/android-chrome-192x192.png b/app/[locale]/android-chrome-192x192.png similarity index 100% rename from app/android-chrome-192x192.png rename to app/[locale]/android-chrome-192x192.png diff --git a/app/android-chrome-512x512.png b/app/[locale]/android-chrome-512x512.png similarity index 100% rename from app/android-chrome-512x512.png rename to app/[locale]/android-chrome-512x512.png diff --git a/app/apple-touch-icon.png b/app/[locale]/apple-touch-icon.png similarity index 100% rename from app/apple-touch-icon.png rename to app/[locale]/apple-touch-icon.png diff --git a/app/favicon-16x16.png b/app/[locale]/favicon-16x16.png similarity index 100% rename from app/favicon-16x16.png rename to app/[locale]/favicon-16x16.png diff --git a/app/favicon-32x32.png b/app/[locale]/favicon-32x32.png similarity index 100% rename from app/favicon-32x32.png rename to app/[locale]/favicon-32x32.png diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx new file mode 100644 index 0000000..f6b3307 --- /dev/null +++ b/app/[locale]/layout.tsx @@ -0,0 +1,22 @@ +// @auto-i18n-check. Please do not delete the line. + +import React from "react"; +import {NextIntlClientProvider, useMessages} from 'next-intl'; + +export default function LocaleLayout({ + children, + params: {locale} + }: { + children: React.ReactNode; params: { locale: string }; +}) { + const messages = useMessages(); + return ( + + + + {children} + + + + ); +} diff --git a/app/[locale]/not-found.tsx b/app/[locale]/not-found.tsx new file mode 100644 index 0000000..6f4d31a --- /dev/null +++ b/app/[locale]/not-found.tsx @@ -0,0 +1,16 @@ +import { useTranslations } from 'next-intl'; +import Image from "next/image"; +import Link from "next/link"; +export default function NotFoundPage() { + const t = useTranslations("NotFoundPage"); + return
+
+ TARDIS +
+

{t('h1_490-590_404NotFound')}

+

{t('p_601-665_TARDISERROR')}

+ {t('Link_676-775_Doctor')} +
+
+
; +} \ No newline at end of file diff --git a/app/types/nezha-api.ts b/app/[locale]/types/nezha-api.ts similarity index 100% rename from app/types/nezha-api.ts rename to app/[locale]/types/nezha-api.ts diff --git a/app/types/utils.ts b/app/[locale]/types/utils.ts similarity index 100% rename from app/types/utils.ts rename to app/[locale]/types/utils.ts diff --git a/app/not-found.tsx b/app/not-found.tsx deleted file mode 100644 index 3c78834..0000000 --- a/app/not-found.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import Image from "next/image"; -import Link from "next/link"; - -export default function NotFoundPage() { - return ( -
-
- TARDIS -
-

- 404 Not Found -

-

TARDIS ERROR!

- - Doctor? - -
-
-
- ); -} diff --git a/auto-i18n-config.json b/auto-i18n-config.json new file mode 100644 index 0000000..c7648db --- /dev/null +++ b/auto-i18n-config.json @@ -0,0 +1,15 @@ +{ + "defaultLang": "en", + "translatorServerName": "azure", + "needLangs": [ + "en", + "zh", + "zh-t", + "ja" + ], + "brandWords": [], + "unMoveToLocaleDirFiles": [], + "enableStaticRendering": false, + "enableSubPageRedirectToLocale": false, + "disableDefaultLangRedirect": true +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 4a5a2aa0b20444437d6f3302da1c4f962bbbb0a7..5e3d1483baedb7a11fb2f7a71a54f52af5251604 100755 GIT binary patch delta 90116 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 delta 88335 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 Cym=D< diff --git a/components/ServerCard.tsx b/components/ServerCard.tsx index b0f63aa..a881292 100644 --- a/components/ServerCard.tsx +++ b/components/ServerCard.tsx @@ -1,4 +1,4 @@ -import { NezhaAPISafe } from "@/app/types/nezha-api"; +import { NezhaAPISafe } from "../app/[locale]/types/nezha-api"; import ServerUsageBar from "@/components/ServerUsageBar"; import { Card } from "@/components/ui/card"; import { diff --git a/components/ServerCardPopover.tsx b/components/ServerCardPopover.tsx index d678c3b..2b03835 100644 --- a/components/ServerCardPopover.tsx +++ b/components/ServerCardPopover.tsx @@ -1,4 +1,4 @@ -import { NezhaAPISafe } from "@/app/types/nezha-api"; +import { NezhaAPISafe } from "../app/[locale]/types/nezha-api"; import { cn, formatBytes } from "@/lib/utils"; export function ServerCardPopoverCard({ diff --git a/components/ServerList.tsx b/components/ServerList.tsx index 14c28d2..9448640 100644 --- a/components/ServerList.tsx +++ b/components/ServerList.tsx @@ -1,6 +1,6 @@ import React from "react"; -import ServerListClient from "@/app/(main)/ClientComponents/ServerListClient"; +import ServerListClient from "../app/[locale]/(main)/ClientComponents/ServerListClient"; export default async function ServerList() { return ; diff --git a/components/ServerOverview.tsx b/components/ServerOverview.tsx index 2e61c79..359dc63 100644 --- a/components/ServerOverview.tsx +++ b/components/ServerOverview.tsx @@ -1,4 +1,4 @@ -import ServerOverviewClient from "@/app/(main)/ClientComponents/ServerOverviewClient"; +import ServerOverviewClient from "../app/[locale]/(main)/ClientComponents/ServerOverviewClient"; export default async function ServerOverview() { return ; diff --git a/i18n-metadata.ts b/i18n-metadata.ts new file mode 100644 index 0000000..e7e755b --- /dev/null +++ b/i18n-metadata.ts @@ -0,0 +1,24 @@ +// @auto-i18n-check. Please do not delete the line. + +export const localeItems = [ +{code: 'en', name: 'English'}, +{code: 'ja', name: '日本語'}, +{code: 'zh-t', name: '中文繁體'}, +{code: 'zh', name: '中文简体'}, +//{code: 'ar', name: 'العربية'}, +//{code: 'de', name: 'Deutsch'}, +//{code: 'es', name: 'Español'}, +//{code: 'fr', name: 'Français'}, +//{code: 'hi', name: 'हिन्दी'}, +//{code: 'id', name: 'Bahasa Indonesia'}, +//{code: 'it', name: 'Italiano'}, +//{code: 'ko', name: '한국어'}, +//{code: 'ms', name: 'Bahasa Melayu'}, +//{code: 'pt', name: 'Português'}, +//{code: 'ru', name: 'Русский'}, +//{code: 'th', name: 'ไทย'}, +//{code: 'vi', name: 'Tiếng Việt'}, +]; + +export const locales = localeItems.map((item) => item.code); +export const defaultLocale = 'en'; diff --git a/i18n.ts b/i18n.ts new file mode 100644 index 0000000..941b5a6 --- /dev/null +++ b/i18n.ts @@ -0,0 +1,14 @@ +// @auto-i18n-check. Please do not delete the line. + +import {notFound} from 'next/navigation'; +import {getRequestConfig} from 'next-intl/server'; +import {locales} from "./i18n-metadata"; + +export default getRequestConfig(async ({locale}) => { + // Validate that the incoming `locale` parameter is valid + if (!locales.includes(locale as any)) notFound(); + + return { + messages: (await import(`./messages/${locale}.json`)).default + }; +}); diff --git a/lib/serverFetch.tsx b/lib/serverFetch.tsx index 020f162..51687a8 100644 --- a/lib/serverFetch.tsx +++ b/lib/serverFetch.tsx @@ -1,7 +1,7 @@ "use server"; -import { NezhaAPI, ServerApi } from "@/app/types/nezha-api"; -import { MakeOptional } from "@/app/types/utils"; +import { NezhaAPI, ServerApi } from "../app/[locale]/types/nezha-api"; +import { MakeOptional } from "../app/[locale]/types/utils"; import { error } from "console"; import { unstable_noStore as noStore } from "next/cache"; import getEnv from "./env-entry"; diff --git a/lib/utils.ts b/lib/utils.ts index ed8ba08..b60052f 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -1,4 +1,4 @@ -import { NezhaAPISafe } from "@/app/types/nezha-api"; +import { NezhaAPISafe } from "../app/[locale]/types/nezha-api"; import { type ClassValue, clsx } from "clsx"; import { twMerge } from "tailwind-merge"; diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 0000000..c9497a2 --- /dev/null +++ b/messages/en.json @@ -0,0 +1,26 @@ +{ + "ServerOverviewClient": { + "p_816-881_Totalservers": "Total servers", + "p_1610-1676_Onlineservers": "Online servers", + "p_2532-2599_Offlineservers": "Offline servers", + "p_3463-3530_Totalbandwidth": "Total bandwidth" + }, + "Footer": { + "p_146-598_Findthecodeon": "Find the code on", + "a_303-585_GitHub": "GitHub", + "section_607-869_2020": "© 2020-", + "a_800-850_Hamster1963": "@Hamster1963" + }, + "Header": { + "p_1079-1199_Simpleandbeautifuldashbo": "Simple and beautiful dashboard" + }, + "Overview": { + "p_2277-2331_Overview": "👋 Overview", + "p_2390-2457_wherethetimeis": "where the time is" + }, + "NotFoundPage": { + "h1_490-590_404NotFound": "404 Not Found", + "p_601-665_TARDISERROR": "TARDIS ERROR!", + "Link_676-775_Doctor": "Doctor?" + } +} \ No newline at end of file diff --git a/messages/ja.json b/messages/ja.json new file mode 100644 index 0000000..fe6a58a --- /dev/null +++ b/messages/ja.json @@ -0,0 +1,26 @@ +{ + "ServerOverviewClient": { + "p_816-881_Totalservers": "サーバーの総数", + "p_1610-1676_Onlineservers": "オンラインサーバー", + "p_2532-2599_Offlineservers": "オフラインサーバー", + "p_3463-3530_Totalbandwidth": "合計帯域幅" + }, + "Footer": { + "p_146-598_Findthecodeon": "でコードを見つけます", + "a_303-585_GitHub": "GitHubの", + "section_607-869_2020": "© 2020年〜", + "a_800-850_Hamster1963": "@Hamster1963" + }, + "Header": { + "p_1079-1199_Simpleandbeautifuldashbo": "シンプルで美しいダッシュボード" + }, + "Overview": { + "p_2277-2331_Overview": "👋 概要", + "p_2390-2457_wherethetimeis": "時間はどこにあるのか" + }, + "NotFoundPage": { + "h1_490-590_404NotFound": "404 見つかりませんでした", + "p_601-665_TARDISERROR": "ターディスエラー!", + "Link_676-775_Doctor": "医者。" + } +} \ No newline at end of file diff --git a/messages/zh-t.json b/messages/zh-t.json new file mode 100644 index 0000000..2df3f04 --- /dev/null +++ b/messages/zh-t.json @@ -0,0 +1,26 @@ +{ + "ServerOverviewClient": { + "p_816-881_Totalservers": "伺服器總數", + "p_1610-1676_Onlineservers": "在線伺服器", + "p_2532-2599_Offlineservers": "離線伺服器", + "p_3463-3530_Totalbandwidth": "總頻寬" + }, + "Footer": { + "p_146-598_Findthecodeon": "查找代碼", + "a_303-585_GitHub": "GitHub的", + "section_607-869_2020": "© 2020 年-", + "a_800-850_Hamster1963": "@Hamster1963" + }, + "Header": { + "p_1079-1199_Simpleandbeautifuldashbo": "簡單美觀的儀錶板" + }, + "Overview": { + "p_2277-2331_Overview": "👋 概述", + "p_2390-2457_wherethetimeis": "時間在哪裡" + }, + "NotFoundPage": { + "h1_490-590_404NotFound": "404 未找到", + "p_601-665_TARDISERROR": "TARDIS 錯誤!", + "Link_676-775_Doctor": "醫生?" + } +} \ No newline at end of file diff --git a/messages/zh.json b/messages/zh.json new file mode 100644 index 0000000..18d8f88 --- /dev/null +++ b/messages/zh.json @@ -0,0 +1,26 @@ +{ + "ServerOverviewClient": { + "p_816-881_Totalservers": "服务器总数", + "p_1610-1676_Onlineservers": "在线服务器", + "p_2532-2599_Offlineservers": "离线服务器", + "p_3463-3530_Totalbandwidth": "总带宽" + }, + "Footer": { + "p_146-598_Findthecodeon": "查找代码", + "a_303-585_GitHub": "GitHub的", + "section_607-869_2020": "© 2020 年-", + "a_800-850_Hamster1963": "@Hamster1963" + }, + "Header": { + "p_1079-1199_Simpleandbeautifuldashbo": "简单美观的仪表板" + }, + "Overview": { + "p_2277-2331_Overview": "👋 概述", + "p_2390-2457_wherethetimeis": "时间在哪里" + }, + "NotFoundPage": { + "h1_490-590_404NotFound": "404 未找到", + "p_601-665_TARDISERROR": "TARDIS 错误!", + "Link_676-775_Doctor": "医生?" + } +} \ No newline at end of file diff --git a/middleware.ts b/middleware.ts new file mode 100644 index 0000000..f165337 --- /dev/null +++ b/middleware.ts @@ -0,0 +1,21 @@ +// @auto-i18n-check. Please do not delete the line. + +import createMiddleware from 'next-intl/middleware'; +import {locales} from "./i18n-metadata"; + +export default createMiddleware({ + // A list of all locales that are supported + locales: locales, + + // Used when no locale matches + defaultLocale: 'en', + + // '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 + localePrefix: 'as-needed', +}); + +export const config = { + // Match only internationalized pathnames + matcher: ['/', '/(en|zh|zh-t|ja)/:path*'] +}; diff --git a/next.config.mjs b/next.config.mjs index 66a8f20..17c3658 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,5 +1,6 @@ +import createNextIntlPlugin from 'next-intl/plugin'; +const withNextIntl = createNextIntlPlugin(); import withPWAInit from "@ducanh2912/next-pwa"; - const withPWA = withPWAInit({ dest: "public", cacheOnFrontEndNav: true, @@ -7,14 +8,13 @@ const withPWA = withPWAInit({ reloadOnOnline: true, disable: false, workboxOptions: { - disableDevLogs: true, - }, + disableDevLogs: true + } }); /** @type {import('next').NextConfig} */ const nextConfig = { - output: "standalone", - reactStrictMode: true, + // output: "standalone", + reactStrictMode: true }; - -export default withPWA(nextConfig); +export default withPWA(withNextIntl(nextConfig)); \ No newline at end of file diff --git a/package.json b/package.json index bee0364..9849a1b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,9 @@ "dev": "next dev -p 3020", "start": "node .next/standalone/server.js", "lint": "next lint", - "build": "next build && cp -r .next/static .next/standalone/.next/ && cp -r public .next/standalone/" + "build": "next build && cp -r .next/static .next/standalone/.next/ && cp -r public .next/standalone/", + "build-dev": "next build", + "start-dev": "next start" }, "dependencies": { "@ducanh2912/next-pwa": "^10.2.9", @@ -28,6 +30,7 @@ "lucide-react": "^0.414.0", "luxon": "^3.5.0", "next": "^14.2.13", + "next-intl": "^3.20.0", "next-runtime-env": "^3.2.2", "next-themes": "^0.3.0", "react": "^18.3.1",