feat(i18n): localize category action messages

This commit is contained in:
2026-06-12 23:21:08 +02:00
parent e9a07eb28e
commit 9f7d1b8ef8
11 changed files with 222 additions and 32 deletions
@@ -27,6 +27,7 @@ export default async function EditCategoryPage({
<EditCategoryForm
category={category}
formCopy={copy.form}
schemaCopy={copy.schema}
submitButtonCopy={dictionary.common.submitButton}
/>
</div>
@@ -1,4 +1,6 @@
import type { Dictionary } from "@/i18n/dictionaries"
import type { CategorySchemaCopy } from "@/schemas/category.schema"
export type CategoryFormCopy = Dictionary["inventory"]["categories"]["form"]
export type CategoryDeleteCopy = Dictionary["inventory"]["categories"]["delete"]
export type { CategorySchemaCopy }
@@ -2,6 +2,7 @@
import { zodResolver } from "@hookform/resolvers/zod"
import { useRouter } from "next/navigation"
import { useMemo } from "react"
import { useForm } from "react-hook-form"
import { toast } from "sonner"
import { updateCategoryAction } from "@/actions/category.actions"
@@ -10,22 +11,28 @@ import {
type SubmitButtonCopy,
} from "@/components/forms/submitButton"
import {
buildUpdateCategorySchema,
type UpdateCategoryFormType,
updateCategorySchema,
} from "@/schemas/category.schema"
import type { CategorySummary } from "@/types"
import type { CategoryFormCopy } from "./category.copy"
import type { CategoryFormCopy, CategorySchemaCopy } from "./category.copy"
export default function EditCategoryForm({
category,
formCopy,
schemaCopy,
submitButtonCopy,
}: {
category: CategorySummary
formCopy: CategoryFormCopy
schemaCopy: CategorySchemaCopy
submitButtonCopy: SubmitButtonCopy
}) {
const router = useRouter()
const schema = useMemo(
() => buildUpdateCategorySchema(schemaCopy),
[schemaCopy],
)
const {
register,
@@ -33,7 +40,7 @@ export default function EditCategoryForm({
setError,
formState: { errors, isSubmitting, isSubmitSuccessful },
} = useForm<UpdateCategoryFormType>({
resolver: zodResolver(updateCategorySchema),
resolver: zodResolver(schema),
defaultValues: {
id: category.id,
name: category.name,
@@ -2,6 +2,7 @@
import { zodResolver } from "@hookform/resolvers/zod"
import { useRouter } from "next/navigation"
import { useMemo } from "react"
import { useForm } from "react-hook-form"
import { toast } from "sonner"
import { createCategoryAction } from "@/actions/category.actions"
@@ -10,19 +11,25 @@ import {
type SubmitButtonCopy,
} from "@/components/forms/submitButton"
import {
buildCreateCategorySchema,
type CreateCategoryFormType,
createCategorySchema,
} from "@/schemas/category.schema"
import type { CategoryFormCopy } from "./category.copy"
import type { CategoryFormCopy, CategorySchemaCopy } from "./category.copy"
export default function NewCategoryForm({
formCopy,
schemaCopy,
submitButtonCopy,
}: {
formCopy: CategoryFormCopy
schemaCopy: CategorySchemaCopy
submitButtonCopy: SubmitButtonCopy
}) {
const router = useRouter()
const schema = useMemo(
() => buildCreateCategorySchema(schemaCopy),
[schemaCopy],
)
const {
register,
@@ -30,7 +37,7 @@ export default function NewCategoryForm({
setError,
formState: { errors, isSubmitting, isSubmitSuccessful },
} = useForm<CreateCategoryFormType>({
resolver: zodResolver(createCategorySchema),
resolver: zodResolver(schema),
})
const onSubmit = async (formData: CreateCategoryFormType) => {
@@ -13,6 +13,7 @@ export default async function NewCategoryPage() {
</div>
<NewCategoryForm
formCopy={copy.form}
schemaCopy={copy.schema}
submitButtonCopy={dictionary.common.submitButton}
/>
</div>