Skip to main content

useUpdateI18nextDocument

Replaces the i18next translation document for one language.

When to use it​

Supply the full document map expected by the platform; this is a document replacement, not a single-key patch.

Setup​

Call it from a client-side React component below OvokProvider so it uses the client configured at that provider boundary.

Hook arguments​

The hook takes no configuration arguments. Call mutate(payload) when the user or workflow is ready to run the operation; the payload and result types are shown below.

TypeScript signature​

(): OvokMutationState<{ language: string; document: Record<string, OvokI18nValue>; }, void>

Mutation state​

The operation runs only when you call mutate(payload). The payload is the language and replacement translation document; the promise resolves with no response body, so use its fulfillment to detect success.

FieldMeaning
dataAlways undefined because this operation has no response body; use the fulfilled mutate promise to detect success.
loadingWhether the mutation is running.
errorNormalized Error from the latest failure.
mutateStarts the operation, resolves with its result, and rejects on failure.
resetClears mutation data and error state.

Request behavior​

The mutation is explicit: collect and validate the input in your UI, disable repeated submission while loading is true, handle the rejected promise, and render error near the action.

Example​

Call the mutation from an event handler and show its error beside the action.

import { useUpdateI18nextDocument } from '@ovok/core';

type Input = Parameters<ReturnType<typeof useUpdateI18nextDocument>['mutate']>[0];

export function UpdateI18nextDocumentExample({ input }: { input: Input }) {
const { mutate, loading, error } = useUpdateI18nextDocument();
async function submit() {
try { await mutate(input); } catch { /* The hook exposes the error below. */ }
}
return <section>
<button disabled={loading} onClick={() => void submit()}>Submit</button>
{error && <p role="alert">{error.message}</p>}
</section>;
}