refactor: enum i18n

This commit is contained in:
naiba
2024-12-14 10:39:07 +08:00
parent d67b9ff4d2
commit b9a8651371
12 changed files with 258 additions and 95 deletions

View File

@@ -93,18 +93,18 @@ export const AlertRuleCard: React.FC<AlertRuleCardProps> = ({ data, mutate }) =>
resolver: zodResolver(alertRuleFormSchema),
defaultValues: data
? {
...data,
rules_raw: JSON.stringify(data.rules),
}
...data,
rules_raw: JSON.stringify(data.rules),
}
: {
name: "",
rules_raw: "",
rules: [],
fail_trigger_tasks: [],
recover_trigger_tasks: [],
notification_group_id: 0,
trigger_mode: 0,
},
name: "",
rules_raw: "",
rules: [],
fail_trigger_tasks: [],
recover_trigger_tasks: [],
notification_group_id: 0,
trigger_mode: 0,
},
resetOptions: {
keepDefaultValues: false,
},
@@ -205,7 +205,7 @@ export const AlertRuleCard: React.FC<AlertRuleCardProps> = ({ data, mutate }) =>
</SelectTrigger>
</FormControl>
<SelectContent>
{Object.entries(triggerModes(t)).map(
{Object.entries(triggerModes).map(
([k, v]) => (
<SelectItem key={k} value={k}>
{v}

View File

@@ -67,13 +67,13 @@ export const CronCard: React.FC<CronCardProps> = ({ data, mutate }) => {
defaultValues: data
? data
: {
name: "",
task_type: 0,
scheduler: "",
servers: [],
cover: 0,
notification_group_id: 0,
},
name: "",
task_type: 0,
scheduler: "",
servers: [],
cover: 0,
notification_group_id: 0,
},
resetOptions: {
keepDefaultValues: false,
},
@@ -143,7 +143,7 @@ export const CronCard: React.FC<CronCardProps> = ({ data, mutate }) => {
</SelectTrigger>
</FormControl>
<SelectContent>
{Object.entries(cronTypes(t)).map(([k, v]) => (
{Object.entries(cronTypes).map(([k, v]) => (
<SelectItem key={k} value={k}>
{v}
</SelectItem>
@@ -199,7 +199,7 @@ export const CronCard: React.FC<CronCardProps> = ({ data, mutate }) => {
</SelectTrigger>
</FormControl>
<SelectContent>
{Object.entries(cronCoverageTypes(t)).map(
{Object.entries(cronCoverageTypes).map(
([k, v]) => (
<SelectItem key={k} value={k}>
{v}

View File

@@ -247,7 +247,7 @@ export const ServiceCard: React.FC<ServiceCardProps> = ({ data, mutate }) => {
</SelectTrigger>
</FormControl>
<SelectContent>
{Object.entries(serviceCoverageTypes(t)).map(
{Object.entries(serviceCoverageTypes).map(
([k, v]) => (
<SelectItem key={k} value={k}>
{v}

View File

@@ -81,7 +81,7 @@ export default function AlertRulePage() {
{
header: t("TriggerMode"),
accessorKey: "trigger Mode",
accessorFn: (row) => triggerModes(t)[row.trigger_mode] || "",
accessorFn: (row) => triggerModes[row.trigger_mode] || "",
},
{
header: t("Rules"),

View File

@@ -74,7 +74,7 @@ export default function CronPage() {
{
header: t("Type"),
accessorKey: "taskType",
accessorFn: (row) => cronTypes(t)[row.task_type] || "",
accessorFn: (row) => cronTypes[row.task_type] || "",
},
{
header: t("CronExpression"),

View File

@@ -64,7 +64,7 @@ export default function SettingsPage() {
}, [error])
useEffect(() => {
;(async () => {
; (async () => {
try {
const c = await getSettings()
setConfig(c)
@@ -78,20 +78,20 @@ export default function SettingsPage() {
resolver: zodResolver(settingFormSchema),
defaultValues: config
? {
...config,
site_name: config.site_name || "",
user_template:
config.user_template ||
Object.keys(config.frontend_templates.filter((t) => !t.is_admin) || {})[0] ||
"user-dist",
}
...config,
site_name: config.site_name || "",
user_template:
config.user_template ||
Object.keys(config.frontend_templates.filter((t) => !t.is_admin) || {})[0] ||
"user-dist",
}
: {
ip_change_notification_group_id: 0,
cover: 1,
site_name: "",
language: "",
user_template: "user-dist",
},
ip_change_notification_group_id: 0,
cover: 1,
site_name: "",
language: "",
user_template: "user-dist",
},
resetOptions: {
keepDefaultValues: false,
},
@@ -236,15 +236,15 @@ export default function SettingsPage() {
{!config?.frontend_templates?.find(
(t) => t.path === field.value,
)?.is_official && (
<div className="mt-2 text-sm text-yellow-700 dark:text-yellow-200 bg-yellow-100 dark:bg-yellow-900 border border-yellow-200 dark:border-yellow-700 rounded-md p-2">
<div className="font-medium text-lg mb-1">
{t("CommunityThemeWarning")}
<div className="mt-2 text-sm text-yellow-700 dark:text-yellow-200 bg-yellow-100 dark:bg-yellow-900 border border-yellow-200 dark:border-yellow-700 rounded-md p-2">
<div className="font-medium text-lg mb-1">
{t("CommunityThemeWarning")}
</div>
<div className="text-yellow-700 dark:text-yellow-200">
{t("CommunityThemeDescription")}
</div>
</div>
<div className="text-yellow-700 dark:text-yellow-200">
{t("CommunityThemeDescription")}
</div>
</div>
)}
)}
</FormItem>
)}
/>
@@ -383,7 +383,7 @@ export default function SettingsPage() {
</FormControl>
<SelectContent>
{Object.entries(
settingCoverageTypes(t),
settingCoverageTypes,
).map(([k, v]) => (
<SelectItem key={k} value={k}>
{v}

View File

@@ -70,7 +70,7 @@ export default function WAFPage() {
accessorKey: "lastBlockReason",
accessorFn: (row) => row.last_block_reason,
cell: ({ row }) => (
<span>{wafBlockReasons(t)[row.original.last_block_reason] || ""}</span>
<span>{wafBlockReasons[row.original.last_block_reason] || ""}</span>
),
},
{
@@ -141,9 +141,9 @@ export default function WAFPage() {
{header.isPlaceholder
? null
: flexRender(
header.column.columnDef.header,
header.getContext(),
)}
header.column.columnDef.header,
header.getContext(),
)}
</TableHead>
)
})}

View File

@@ -1,6 +1,6 @@
import { TFunction } from "i18next"
import i18n from "@/lib/i18n"
export const triggerModes = (t: TFunction<"translation", undefined>) => ({
0: t("Always"),
1: t("Once"),
})
export const triggerModes: Record<number, string> = {
0: i18n.t("Always"),
1: i18n.t("Once"),
}

View File

@@ -1,12 +1,12 @@
import { TFunction } from "i18next"
import i18n from "@/lib/i18n"
export const cronTypes = (t: TFunction<"translation", undefined>) => ({
0: t("Scheduled"),
1: t("Trigger"),
})
export const cronTypes: Record<number, string> = {
0: i18n.t("Scheduled"),
1: i18n.t("Trigger"),
}
export const cronCoverageTypes = (t: TFunction<"translation", undefined>) => ({
0: t("Coverages.Only"),
1: t("Coverages.Excludes"),
2: t("Coverages.Alarmed"),
})
export const cronCoverageTypes: Record<number, string> = {
0: i18n.t("Coverages.Only"),
1: i18n.t("Coverages.Excludes"),
2: i18n.t("Coverages.Alarmed"),
}

View File

@@ -1,4 +1,4 @@
import { TFunction } from "i18next"
import i18n from "@/lib/i18n"
export const serviceTypes: Record<number, string> = {
1: "HTTP GET",
@@ -6,7 +6,7 @@ export const serviceTypes: Record<number, string> = {
3: "TCPing",
}
export const serviceCoverageTypes = (t: TFunction<"translation", undefined>) => ({
0: t("Coverages.Excludes"),
1: t("Coverages.Only"),
})
export const serviceCoverageTypes: Record<number, string> = {
0: i18n.t("Coverages.Excludes"),
1: i18n.t("Coverages.Only"),
}

View File

@@ -1,9 +1,9 @@
import { TFunction } from "i18next"
import i18n from "@/lib/i18n"
export const settingCoverageTypes = (t: TFunction<"translation", undefined>) => ({
1: t("Coverages.Excludes"),
2: t("Coverages.Only"),
})
export const settingCoverageTypes: Record<number, string> = {
1: i18n.t("Coverages.Excludes"),
2: i18n.t("Coverages.Only"),
}
export const nezhaLang: Record<string, string> = {
"zh-CN": "简体中文(中国大陆)",
@@ -11,8 +11,8 @@ export const nezhaLang: Record<string, string> = {
"en-US": "English",
}
export const wafBlockReasons = (t: TFunction<"translation", undefined>) => ({
1: t("LoginFailed"),
2: t("BruteForceAttackingToken"),
3: t("BruteForceAttackingAgentSecret"),
})
export const wafBlockReasons: Record<number, string> = {
1: i18n.t("LoginFailed"),
2: i18n.t("BruteForceAttackingToken"),
3: i18n.t("BruteForceAttackingAgentSecret"),
}