mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-27 08:15:31 +00:00
feat(web): i18n (#12471)
This commit is contained in:
83
packages/console/app/src/lib/form-error.ts
Normal file
83
packages/console/app/src/lib/form-error.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
import type { Key } from "~/i18n"
|
||||
|
||||
export const formError = {
|
||||
invalidPlan: "error.invalidPlan",
|
||||
workspaceRequired: "error.workspaceRequired",
|
||||
alreadySubscribed: "error.alreadySubscribed",
|
||||
limitRequired: "error.limitRequired",
|
||||
monthlyLimitInvalid: "error.monthlyLimitInvalid",
|
||||
workspaceNameRequired: "error.workspaceNameRequired",
|
||||
nameTooLong: "error.nameTooLong",
|
||||
emailRequired: "error.emailRequired",
|
||||
roleRequired: "error.roleRequired",
|
||||
idRequired: "error.idRequired",
|
||||
nameRequired: "error.nameRequired",
|
||||
providerRequired: "error.providerRequired",
|
||||
apiKeyRequired: "error.apiKeyRequired",
|
||||
modelRequired: "error.modelRequired",
|
||||
} as const
|
||||
|
||||
const map = {
|
||||
[formError.invalidPlan]: "error.invalidPlan",
|
||||
[formError.workspaceRequired]: "error.workspaceRequired",
|
||||
[formError.alreadySubscribed]: "error.alreadySubscribed",
|
||||
[formError.limitRequired]: "error.limitRequired",
|
||||
[formError.monthlyLimitInvalid]: "error.monthlyLimitInvalid",
|
||||
[formError.workspaceNameRequired]: "error.workspaceNameRequired",
|
||||
[formError.nameTooLong]: "error.nameTooLong",
|
||||
[formError.emailRequired]: "error.emailRequired",
|
||||
[formError.roleRequired]: "error.roleRequired",
|
||||
[formError.idRequired]: "error.idRequired",
|
||||
[formError.nameRequired]: "error.nameRequired",
|
||||
[formError.providerRequired]: "error.providerRequired",
|
||||
[formError.apiKeyRequired]: "error.apiKeyRequired",
|
||||
[formError.modelRequired]: "error.modelRequired",
|
||||
"Invalid plan": "error.invalidPlan",
|
||||
"Workspace ID is required": "error.workspaceRequired",
|
||||
"Workspace ID is required.": "error.workspaceRequired",
|
||||
"This workspace already has a subscription": "error.alreadySubscribed",
|
||||
"Limit is required.": "error.limitRequired",
|
||||
"Set a valid monthly limit": "error.monthlyLimitInvalid",
|
||||
"Set a valid monthly limit.": "error.monthlyLimitInvalid",
|
||||
"Workspace name is required.": "error.workspaceNameRequired",
|
||||
"Name must be 255 characters or less.": "error.nameTooLong",
|
||||
"Email is required": "error.emailRequired",
|
||||
"Role is required": "error.roleRequired",
|
||||
"ID is required": "error.idRequired",
|
||||
"Name is required": "error.nameRequired",
|
||||
"Provider is required": "error.providerRequired",
|
||||
"API key is required": "error.apiKeyRequired",
|
||||
"Model is required": "error.modelRequired",
|
||||
} as const satisfies Record<string, Key>
|
||||
|
||||
export function formErrorReloadAmountMin(amount: number) {
|
||||
return `error.reloadAmountMin:${amount}`
|
||||
}
|
||||
|
||||
export function formErrorReloadTriggerMin(amount: number) {
|
||||
return `error.reloadTriggerMin:${amount}`
|
||||
}
|
||||
|
||||
export function localizeError(t: (key: Key, params?: Record<string, string | number>) => string, error?: string) {
|
||||
if (!error) return ""
|
||||
|
||||
if (error.startsWith("error.reloadAmountMin:")) {
|
||||
const amount = Number(error.split(":")[1] ?? 0)
|
||||
return t("error.reloadAmountMin", { amount })
|
||||
}
|
||||
|
||||
if (error.startsWith("error.reloadTriggerMin:")) {
|
||||
const amount = Number(error.split(":")[1] ?? 0)
|
||||
return t("error.reloadTriggerMin", { amount })
|
||||
}
|
||||
|
||||
const amount = error.match(/^Reload amount must be at least \$(\d+)$/)
|
||||
if (amount) return t("error.reloadAmountMin", { amount: Number(amount[1]) })
|
||||
|
||||
const trigger = error.match(/^Balance trigger must be at least \$(\d+)$/)
|
||||
if (trigger) return t("error.reloadTriggerMin", { amount: Number(trigger[1]) })
|
||||
|
||||
const key = map[error as keyof typeof map]
|
||||
if (key) return t(key)
|
||||
return error
|
||||
}
|
||||
Reference in New Issue
Block a user