feat(i18n): add translations to dashboard pages

This commit is contained in:
JiPai
2025-03-09 22:24:46 +08:00
parent ed89f5aa8a
commit a1bbfaebf4
6 changed files with 33 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
import { ShowContainers } from "@/components/dashboard/docker/show/show-containers"; import { ShowContainers } from "@/components/dashboard/docker/show/show-containers";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { appRouter } from "@/server/api/root"; import { appRouter } from "@/server/api/root";
import { getLocale, serverSideTranslations } from "@/utils/i18n";
import { IS_CLOUD } from "@dokploy/server/constants"; import { IS_CLOUD } from "@dokploy/server/constants";
import { validateRequest } from "@dokploy/server/lib/auth"; import { validateRequest } from "@dokploy/server/lib/auth";
import { createServerSideHelpers } from "@trpc/react-query/server"; import { createServerSideHelpers } from "@trpc/react-query/server";
@@ -38,6 +39,7 @@ export async function getServerSideProps(
}; };
} }
const { req, res } = ctx; const { req, res } = ctx;
const locale = getLocale(req.cookies);
const helpers = createServerSideHelpers({ const helpers = createServerSideHelpers({
router: appRouter, router: appRouter,
@@ -70,11 +72,14 @@ export async function getServerSideProps(
return { return {
props: { props: {
trpcState: helpers.dehydrate(), trpcState: helpers.dehydrate(),
...(await serverSideTranslations(locale, ["common", "home"])),
}, },
}; };
} catch (_error) { } catch (_error) {
return { return {
props: {}, props: {
...(await serverSideTranslations(locale, ["common", "home"])),
},
}; };
} }
} }

View File

@@ -4,6 +4,7 @@ import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { Card } from "@/components/ui/card"; import { Card } from "@/components/ui/card";
import { useLocalStorage } from "@/hooks/useLocalStorage"; import { useLocalStorage } from "@/hooks/useLocalStorage";
import { api } from "@/utils/api"; import { api } from "@/utils/api";
import { getLocale, serverSideTranslations } from "@/utils/i18n";
import { IS_CLOUD } from "@dokploy/server/constants"; import { IS_CLOUD } from "@dokploy/server/constants";
import { validateRequest } from "@dokploy/server/lib/auth"; import { validateRequest } from "@dokploy/server/lib/auth";
import { Loader2 } from "lucide-react"; import { Loader2 } from "lucide-react";
@@ -91,6 +92,8 @@ Dashboard.getLayout = (page: ReactElement) => {
export async function getServerSideProps( export async function getServerSideProps(
ctx: GetServerSidePropsContext<{ serviceId: string }>, ctx: GetServerSidePropsContext<{ serviceId: string }>,
) { ) {
const { req } = ctx;
const locale = getLocale(req.cookies);
if (IS_CLOUD) { if (IS_CLOUD) {
return { return {
redirect: { redirect: {
@@ -110,6 +113,8 @@ export async function getServerSideProps(
} }
return { return {
props: {}, props: {
...(await serverSideTranslations(locale, ["common", "home"])),
},
}; };
} }

View File

@@ -2,6 +2,7 @@ import { ShowProjects } from "@/components/dashboard/projects/show";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { appRouter } from "@/server/api/root"; import { appRouter } from "@/server/api/root";
import { api } from "@/utils/api"; import { api } from "@/utils/api";
import { getLocale, serverSideTranslations } from "@/utils/i18n";
import { validateRequest } from "@dokploy/server/lib/auth"; import { validateRequest } from "@dokploy/server/lib/auth";
import { createServerSideHelpers } from "@trpc/react-query/server"; import { createServerSideHelpers } from "@trpc/react-query/server";
import type { GetServerSidePropsContext } from "next"; import type { GetServerSidePropsContext } from "next";
@@ -37,6 +38,7 @@ export async function getServerSideProps(
ctx: GetServerSidePropsContext<{ serviceId: string }>, ctx: GetServerSidePropsContext<{ serviceId: string }>,
) { ) {
const { req, res } = ctx; const { req, res } = ctx;
const locale = getLocale(req.cookies);
const { user, session } = await validateRequest(req); const { user, session } = await validateRequest(req);
const helpers = createServerSideHelpers({ const helpers = createServerSideHelpers({
@@ -64,6 +66,7 @@ export async function getServerSideProps(
return { return {
props: { props: {
trpcState: helpers.dehydrate(), trpcState: helpers.dehydrate(),
...(await serverSideTranslations(locale, ["common", "home"])),
}, },
}; };
} }

View File

@@ -1,5 +1,6 @@
import { ShowRequests } from "@/components/dashboard/requests/show-requests"; import { ShowRequests } from "@/components/dashboard/requests/show-requests";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { getLocale, serverSideTranslations } from "@/utils/i18n";
import { IS_CLOUD } from "@dokploy/server/constants"; import { IS_CLOUD } from "@dokploy/server/constants";
import { validateRequest } from "@dokploy/server/lib/auth"; import { validateRequest } from "@dokploy/server/lib/auth";
import type { GetServerSidePropsContext } from "next"; import type { GetServerSidePropsContext } from "next";
@@ -14,6 +15,8 @@ Requests.getLayout = (page: ReactElement) => {
export async function getServerSideProps( export async function getServerSideProps(
ctx: GetServerSidePropsContext<{ serviceId: string }>, ctx: GetServerSidePropsContext<{ serviceId: string }>,
) { ) {
const { req } = ctx;
const locale = getLocale(req.cookies);
if (IS_CLOUD) { if (IS_CLOUD) {
return { return {
redirect: { redirect: {
@@ -33,6 +36,8 @@ export async function getServerSideProps(
} }
return { return {
props: {}, props: {
...(await serverSideTranslations(locale, ["common", "home"])),
},
}; };
} }

View File

@@ -1,6 +1,7 @@
import SwarmMonitorCard from "@/components/dashboard/swarm/monitoring-card"; import SwarmMonitorCard from "@/components/dashboard/swarm/monitoring-card";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { appRouter } from "@/server/api/root"; import { appRouter } from "@/server/api/root";
import { getLocale, serverSideTranslations } from "@/utils/i18n";
import { IS_CLOUD } from "@dokploy/server/constants"; import { IS_CLOUD } from "@dokploy/server/constants";
import { validateRequest } from "@dokploy/server/lib/auth"; import { validateRequest } from "@dokploy/server/lib/auth";
import { createServerSideHelpers } from "@trpc/react-query/server"; import { createServerSideHelpers } from "@trpc/react-query/server";
@@ -38,6 +39,7 @@ export async function getServerSideProps(
}; };
} }
const { req, res } = ctx; const { req, res } = ctx;
const locale = getLocale(req.cookies);
const helpers = createServerSideHelpers({ const helpers = createServerSideHelpers({
router: appRouter, router: appRouter,
@@ -70,11 +72,14 @@ export async function getServerSideProps(
return { return {
props: { props: {
trpcState: helpers.dehydrate(), trpcState: helpers.dehydrate(),
...(await serverSideTranslations(locale, ["common", "home"])),
}, },
}; };
} catch (_error) { } catch (_error) {
return { return {
props: {}, props: {
...(await serverSideTranslations(locale, ["common", "home"])),
},
}; };
} }
} }

View File

@@ -1,6 +1,7 @@
import { ShowTraefikSystem } from "@/components/dashboard/file-system/show-traefik-system"; import { ShowTraefikSystem } from "@/components/dashboard/file-system/show-traefik-system";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { appRouter } from "@/server/api/root"; import { appRouter } from "@/server/api/root";
import { getLocale, serverSideTranslations } from "@/utils/i18n";
import { IS_CLOUD } from "@dokploy/server/constants"; import { IS_CLOUD } from "@dokploy/server/constants";
import { validateRequest } from "@dokploy/server/lib/auth"; import { validateRequest } from "@dokploy/server/lib/auth";
import { createServerSideHelpers } from "@trpc/react-query/server"; import { createServerSideHelpers } from "@trpc/react-query/server";
@@ -38,6 +39,7 @@ export async function getServerSideProps(
}; };
} }
const { req, res } = ctx; const { req, res } = ctx;
const locale = getLocale(req.cookies);
const helpers = createServerSideHelpers({ const helpers = createServerSideHelpers({
router: appRouter, router: appRouter,
@@ -70,11 +72,14 @@ export async function getServerSideProps(
return { return {
props: { props: {
trpcState: helpers.dehydrate(), trpcState: helpers.dehydrate(),
...(await serverSideTranslations(locale, ["common", "home"])),
}, },
}; };
} catch (_error) { } catch (_error) {
return { return {
props: {}, props: {
...(await serverSideTranslations(locale, ["common", "home"])),
},
}; };
} }
} }